从文本文件的Python-xy 3d图

时间:2015-11-06 22:11:18

标签: matplotlib text-files surface mplot3d pythonxy

我有一个包含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轴不相容,但我不确定为什么会这样。有什么特别的地方我在这里错了吗?

1 个答案:

答案 0 :(得分:1)

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

在致电plot_surface之前,请尝试插入以下代码:

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

这三个值必须相等。