我想從一個大文件中繪製一些數據。 數據具有以下形式:「輸入x和y必須是1D或2D」matplotlib中的錯誤
0.025876 139 0
0.030881 140 0
0.030982 141 0
0.035602 142 0
0.035521 143 0
0.038479 144 0
0.040668 145 0
0.040121 146 0
0.037953 147 0
0.039027 148 0
0.038338 149 0
0.047557 139 1
0.045105 140 1
0.044943 141 1
0.042370 142 1
0.042025 143 1
0.038946 144 1
0.037953 145 1
0.033373 146 1
0.030070 147 1
0.029118 148 1
0.025552 149 1
原則上,每行對應於一個三維點,我會「只是」想繪製從這些點類似於什麼我可以用做產生的三維表面在gnuplot中爲那些瞭解它的人繪製splot函數。
你打算在網上找到一個答案,我的問題,我試圖與matplolib輪廓功能下列事情:
#!/usr/bin/python
from numpy import *
import pylab as p
import sys
import mpl_toolkits.mplot3d.axes3d as p3
s = str(sys.argv[1])
f = open(s)
z,y,x = loadtxt(f, unpack = True)
f.close
#x = [1,2,3]
#y = [1,2,3]
#z = [1,8,16]
data = zip(x,y,z)
#map data on the plane
X, Y = meshgrid(arange(0, 89, 1), arange(0, 300, 1))
Z = zeros((len(X),len(Y)),'Float32')
for x_,y_,z_ in data:
Z[x_, y_] = z_ #this should work, but only because x and y are integers
#and arange was done with a step of 1, starting from 0
fig=p.figure()
ax = p3.Axes3D(fig)
ax.contourf(X,Y,Z)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
p.show()
這段代碼工作實際罰款的向量x,y和z評論在上面的代碼中加上一個hashtag。
但是我知道,我正在嘗試使用上面給出的數據,我在matplotlib中得到「輸入x和y必須是1D或2D」錯誤。
我讀過這可能與Z不具有與X或Y相同形狀的事實有關......但我不確定如何處理此問題。
順便說一句,你可能已經意識到,我是一個Python新手,我很抱歉如果代碼對你們中的一些人來說很醜。
無論如何,任何幫助將非常受歡迎。
謝謝!
法比安斯基
X和Z的形狀是不一樣的,嘗試:'零(X.shape), '浮點32')'。 – HYRY 2013-03-23 13:08:30
我道歉......我不知道把X.shape位放在哪裏。我寫Z =零(X.shape,'Float32')? – gatsu 2013-03-23 13:29:42