gpt4 book ai didi

python - 使用 Matplotlib 绘制二维数组

转载 作者:太空宇宙 更新时间:2023-11-03 11:55:09 25 4
gpt4 key购买 nike

所以我有一个二维数组(名为数据),如下所示:

            Shape 0       Shape 1     ...      Shape N
------- ------- -------

Scale 0 | Value00 , Value01 ... Value0N |

Scale 1 | Value10 , Value11 ... Value1N |

.
.
.

Scale N | ValueN0 , ValueN1 ... ValueNN |

我想创建一个 3D 图,其中 ValueXXs 是 Z 轴。我尝试了两次尝试,但每次都给我一个相对于另一个旋转的表面,所以我让自己有点困惑。这是我第一次尝试解决方案:

x,y = numpy.mgrid[0:50:50j,0:50:50j]
f = Data
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(x,y,f,rstride=1,cstride=1)

这是我的第二次尝试:

nx, ny = 50, 50
x = range(nx)
y = range(ny)
hf = plt.figure()
ha = hf.add_subplot(111, projection='3d')
X, Y = numpy.meshgrid(x, y)
ha.plot_surface(X,Y,Data,rstride=1,cstride=1)

检查 X 和 Y 确实没有帮助,因为它是正方形。我不确定 X 何时代表我的“比例”,何时代表我的“形状”。

那么,这两个例子到底发生了什么?有没有更好的方法来绘制这个数组?

谢谢!

最佳答案

如果我没理解错的话,混淆是哪个轴是哪个,对吧?如果是这种情况,您可以轻松绘制一个已知的不对称形状,该图会告诉您一切。例如采用an example from the gallery :

# By Armin Moser

from mpl_toolkits.mplot3d import Axes3D
import matplotlib
import numpy as np
from matplotlib import cm
from matplotlib import pyplot as plt
step = 0.04
maxval = 1.0
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# create supporting points in polar coordinates
r = np.linspace(0,1.25,50)
p = np.linspace(0,2*np.pi,50)
R,P = np.meshgrid(r,p)
# transform them to cartesian system
X,Y = R*np.cos(P),R*np.sin(P)

#Z = ((R**2 - 1)**2)
Z = (X**2 + 0.2*Y**2 -1)**2 # <------- edit

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet)
#ax.set_zlim3d(0, 1)
ax.set_xlabel(r'$\phi_\mathrm{real}$')
ax.set_ylabel(r'$\phi_\mathrm{im}$')
ax.set_zlabel(r'$V(\phi)$')
plt.show()

关于python - 使用 Matplotlib 绘制二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13223497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com