Numpy N-D矩阵到3D网格图

时间:2017-02-16 11:49:33

标签: python numpy matrix matplotlib graph

我尝试了很多,并且有很多关于具体示例的信息,但它们太具体而无法理解。

如何将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这样的错误:解压缩的值太多了

1 个答案:

答案 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()

你会给哪个

3D wireframe plot

还有很多其他方法可以在matplotlib中显示3D数据,另请参阅here。但是,您始终限制为3维(或4,如果您执行3D散点图,其中颜色编码第4维)。因此,您需要决定要显示的尺寸,或者您是否可以以某种方式对它们进行汇总。