嗨我似乎无法用简单的坐标创建一个3d表示 - 我不想要这些行 - (每个不同于0的坐标表示应用在触摸屏上的手指)
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 =[1,2,3,4,5,6,7,8,9,10]
Y =[5,6,2,3,13,4,1,2,4,8]
Z =[0,2,0,5,0,0,0,0,8,0]
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
ax.plot_surface(X, Y, Z, rstride=10, cstride=10)
plt.show()
答案 0 :(得分:1)
要执行plot_surface
,您的输入数组(X,Y,Z
)应为2D数组。
在你的情况下,你试图输入一维数组,这就是你的原因
运行你的代码只需要网格即可得到一个空图。
以下是您的代码的示例:
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 =[1,2,3,4,5,6,7,8,9,10]
Y =[5,6,2,3,13,4,1,2,4,8]
Z =[0,2,0,5,0,0,0,0,8,0]
x_plot,y_plot = np.meshgrid(X,Y)
z_plot = x_plot**2 + x_plot**2
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
ax.plot_surface(x_plot,y_plot,z_plot)
plt.show()
在这里,我已经将2D数组作为输入给出了。我使用numpy.meshgrid
制作了它们。 Z轴是任意值。这会产生:
正如其他人所建议的那样,你只需要3D散点图,在这种情况下只需使用
ax.scatter(X,Y,Z)
你会得到