Python等高线图
我有一个文件,内容大概是这样的:
1237665126927237227 7.49126127875 1500 7.0
1237665126927237227 6.64062342139 1750 7.0
1237665126927237227 5.79903397289 2000 7.0
1237665126927237227 7.24807646775 1500 7.5
1237665126927237227 6.51250095795 1750 7.5
1237665126927237227 5.74908888515 2000 7.5
1237665126927237227 6.91915170741 1500 8.0
1237665126927237227 6.29638684709 1750 8.0
1237665126927237227 5.62891381033 2000 8.0
1237665126927237227 6.54437390102 1500 8.5
1237665126927237227 5.98359412299 1750 8.5
1237665126927237227 5.43512459898 2000 8.5
等等
我需要画一个图,3
列作为横坐标(x
轴),4
列作为纵坐标(y
轴),而2
列则用来画等高线,等高线的值设定为1, 2, 3, 4
等等。
我想做的事情大概是这样的:
from pylab import *
ChiTable= np.loadtxt('ChiTableSingle.txt')
xlist = linspace(ChiTable[2])
ylist = linspace(ChiTable[3])
X, Y = meshgrid (xlist, ylist)
Z =partsChi[1]
figure()
CP1 = contour(X, Y, Z)
clabel(CP1, inline=True, fontsize=10)
pl.show()
但是我搞得自己一头雾水。我遇到一个错误,提示说z的输入需要是一个二维数组,我能理解这个问题,因为我已经把X和Y变成了二维数组,而z也需要有对应的值,但我完全不知道该怎么做。
1 个回答
2
你需要对你的数据进行 reshape
,而不是使用 meshgrid
。
可以这样做:
xdim = 3
ydim = 3
X = np.asarray(ChiTable[2]).reshape((xdim, ydim))
Y = np.asarray(ChiTable[3]).reshape((xdim, ydim))
Z = np.asarray(ChiTable[1]).reshape((xdim, ydim))
contour(X, Y, Z)
meshgrid
是用来处理两个一维数组的,它会把这两个数组的所有组合都列出来;而 reshape
则是把一个包含 N
个元素的数组,变成一个形状不同但元素数量相同的数组。