0

我有一个包含 500x500 强度值的文本文件。我正在尝试使用 Python-XY 生成此数据的 3D 图。只有这个 500x500 阵列的特定部分被绘制(235:268、210: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 轴不兼容,但我不确定这是为什么。我在这里有什么地方特别出错了吗?

4

1 回答 1

1

为了在 3 个轴上绘制一堆点,每个点都需要有一个 x、y 和 z 值。因此,例如,如果您想绘制 10 个点,您将传递给的 3 个列表plot_surface(x、y 和 z 轴各一个)应该有 10、10 和 10 个值。这为所有 10 个点提供了 x、y 和 z 值。您的x,yZ列表没有相同数量的元素。有些点有y值,但没有x值。

在调用之前,请plot_surface尝试插入这行代码:

print len(x), len(y), len(Z)

这三个值必须相等。

于 2015-11-06T22:18:59.950 回答