首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当X或Y轴的值是字符串时,ax.plot_wireframe错误

当X或Y轴的值是字符串时,ax.plot_wireframe错误
EN

Stack Overflow用户
提问于 2022-07-25 10:49:57
回答 1查看 27关注 0票数 0

我想用matplotlib为我的网站绘制一个曲面三维图,但是我得到了一个错误。以下是源代码:

代码语言:javascript
复制
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

X = np.array([ '4K', '8K' ])
Y = np.array([ 1, 4 ])
Z = np.array([[0.1925, 0.1848], [0.1807, 0.1966]])

ax.plot_wireframe(X, Y, Z)

plt.show()

我所犯的错误是

代码语言:javascript
复制
Traceback (most recent call last):
  File "wire3d.py", line 21, in <module>
    ax.plot_wireframe(X, Y, Z)
  File "/usr/local/lib/python3.8/dist-packages/matplotlib/_api/deprecation.py", line 415, in wrapper
    return func(*inner_args, **inner_kwargs)
  File "/usr/local/lib/python3.8/dist-packages/mpl_toolkits/mplot3d/axes3d.py", line 1908, in plot_wireframe
    self.auto_scale_xyz(X, Y, Z, had_data)
  File "/usr/local/lib/python3.8/dist-packages/mpl_toolkits/mplot3d/axes3d.py", line 652, in auto_scale_xyz
    self.xy_dataLim.update_from_data_xy(
  File "/usr/local/lib/python3.8/dist-packages/matplotlib/transforms.py", line 967, in update_from_data_xy
    path = Path(xy)
  File "/usr/local/lib/python3.8/dist-packages/matplotlib/path.py", line 129, in __init__
    vertices = _to_unmasked_float_array(vertices)
  File "/usr/local/lib/python3.8/dist-packages/matplotlib/cbook/__init__.py", line 1298, in _to_unmasked_float_array
    return np.asarray(x, float)
ValueError: could not convert string to float: '4K'

有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-25 11:26:23

您必须指定4K和8K是什么意思:

代码语言:javascript
复制
X = np.array([ 4000, 8000 ])

如果您对在x轴中显示"4K“和"8K”感兴趣,则可以在显示图形之前添加ax.set_xticks(X, [ '4K', '8K' ])

这是正确的代码:

代码语言:javascript
复制
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

X = np.array([ 4000, 8000 ])
Y = np.array([ 1, 4 ])
Z = np.array([[0.1925, 0.1848], [0.1807, 0.1966]])

ax.plot_wireframe(X, Y, Z)
ax.set_xticks(X, [ '4K', '8K' ])

plt.show()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73107985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档