我尝试了很多,并且有很多关于具体示例的信息,但它们太具体而无法理解。
如何将Numpy N-D矩阵中的数据放入3D图形中。请参考以下示例
import numpy as np
X =20
Y = 20
Z = 2
sample = np.zeros(((X,Y,Z)))
sample[1][2][2]=45
sample[1][3][0]=52
sample[1][8][1]=42
sample[1][15][1]=30
sample[1][19][2]=15
我想将X,Y,Z位置的值用在3D图形(图表)上。
提前致谢
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
# Define size of data
P= 25
X = 70
Y = 25
Z = 3
# Create meshgrid
x,y = np.meshgrid(np.arange(X),np.arange(Y))
# Create some random data (your example didn't work)
sample = np.random.randn((((P,X,Y,Z))))
# Create figure
fig=plt.figure()
ax=fig.add_subplot(111,projection='3d')
fig.show()
# Define colors
colors=['b','r','g']
# Plot for each entry of in Z
for i in range(Z):
ax.plot_wireframe(x, y, sample[:,:,:,i],color=colors[i])
plt.draw()
plt.show()
但我只想画X,Y,Z。 当我使用上面的代码时,python会抛出很多像ValueError这样的错误:解压缩的值太多了
答案 0 :(得分:1)
你在找这样的东西吗?
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
# Define size of data
X = 20
Y = 20
Z = 3
# Create meshgrid
x,y = np.meshgrid(np.arange(X),np.arange(Y))
# Create some random data (your example didn't work)
sample = np.random.randn(X,Y,Z)
# Create figure
fig=plt.figure()
ax=fig.add_subplot(111,projection='3d')
fig.show()
# Define colors
colors=['b','r','g']
# Plot for each entry of in Z
for i in range(Z):
ax.plot_wireframe(x, y, sample[:,:,i],color=colors[i])
plt.draw()
plt.show()
你会给哪个
还有很多其他方法可以在matplotlib
中显示3D数据,另请参阅here。但是,您始终限制为3维(或4,如果您执行3D散点图,其中颜色编码第4维)。因此,您需要决定要显示的尺寸,或者您是否可以以某种方式对它们进行汇总。