我有一个包含500x500强度值的文本文件。我正在尝试使用Python XY生成这些数据的3D图。只有500x500阵列的特定部分要绘制(235:268210:280)。
以下是迄今为止Python XY代码的许多尝试之一:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
from matplotlib.mlab import griddata
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
data = np.genfromtxt('Fig2.txt')
X = np.linspace(235,268,num=33)
Y = np.linspace(210,280,num=70)
x,y = np.meshgrid (X,Y)
Z = data[235:268,210:280]
ax.plot_surface(x,y,Z, rstride=1, cstride=1, cmap=cm.jet)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
我尝试了许多不同的代码来生成这个图,但有一个特别的错误不断出现:
ValueError: shape mismatch: two or more arrays have incompatible dimensions on axis 0.
我假设这是指X轴和Y轴不兼容,但我不确定为什么会这样。有没有特别的地方我错了?
为了在3个轴上绘制一组点,每个点都需要有一个x、y和z值。因此,例如,如果要绘制10个点,将传递给plot_surface
的3个列表(x、y和z轴各一个)中应包含10、10和10个值。这为所有10个点提供了一个x、y和z值。您的x
、y
和Z
列表中的元素数量不相等。有些点有y值,但没有x值。
在调用plot_surface
之前,请尝试插入以下代码行:
print len(x), len(y), len(Z)
这三个值必须相等。