2013-05-30 108 views
0

我有三個數據集從形式二維彩色地圖與matplotlib XYZ數據

x, y, z 

給出一個模擬看起來像這樣:

0.0000000E+00 0.000000000000000E+000 1.00000000000000 
0.0000000E+00 0.200000002980232  1.00000000000000 
0.0000000E+00 0.400000005960464  1.00000000000000 
0.0000000E+00 0.600000008940697  1.00000000000000 
0.0000000E+00 0.800000011920929  1.00000000000000 
0.0000000E+00 1.00000001490116  1.00000000000000 

0.1000000  0.000000000000000E+000 0.974332364008348 
0.1000000  0.200000002980232  0.974332364008348 
0.1000000  0.400000005960464  0.974332364008348 
0.1000000  0.600000008940697  0.974332364008348 
0.1000000  0.800000011920929  0.974332364008348 
0.1000000  1.00000001490116  0.974332364008348 

0.2000000  0.000000000000000E+000 0.999148125725412 
0.2000000  0.200000002980232  0.999148125725412 
0.2000000  0.400000005960464  0.999148125725412 
0.2000000  0.600000008940697  0.999148125725412 
0.2000000  0.800000011920929  0.999148125725412 
0.2000000  1.00000001490116  0.999148125725412 

... 

我想提出一個二維彩色我的XYZ數據的地圖圖,其中x和y只是座標,z是這些點中的每一個的值。

在GNUPLOT這是很容易做到:

如果我使用

set pm3d map 

splot 'datafile.txt' 

我得到正確的陰謀。

但現在我想知道如何在matplotlib中完成此操作。

任何人都可以幫助我嗎?

+0

你有什麼試過?您是否堅持將數據導入到python中,或者一旦擁有它就進行繪圖? – tacaswell

+0

其實,我可以通過「genfromtxt(...)」 從文件中讀取數據,並將所有內容存儲在x,y,z變量中。但後來我不知道如何獲得與我使用gnuplot相同的情節。 – user2437169

+0

你應該發佈該代碼,或者從假設你有'x','y'和'z'開始。另外,查看'imshow'和'pcolor' – tacaswell

回答

0

我的X和Y值是數組,如下所示:

x_vals = np.linspace(500, 40000, 160) 
y_vals = np.linspace(100, 5000, 50) 

我的Z值是一個二維數組,在一個循環是這樣計算的:

z_vals = [] 
for this_y in y_vals: 
    this_z = [] 
    for this_x in x_vals: 
     this_val = gain_for_position(this_x, this_y, val_a, val_b) 
     this_z.append(this_val) 
    z_vals.append(this_z) 

情節我有被吸引用以下代碼:

plt.contourf(x_vals, y_vals, z_vals, 8) 
contour_labels = plt.contour(x_vals, y_vals, 
          z_vals, 8, colors='black', linewidth=.5) 
plt.clabel(contour_labels, inline=1, fontsize=10) 

並導致一個這樣的情節。 enter image description here