2016-10-06 10 views
0

強度プロットを作成する必要があります。Python - 補間のない強度マップ

実際のデータからインポートされたx、y、z値の3つのリスト:x_list, y_list, z_listがあります。これらの各リストには200個の値が含まれています。したがって、各x、yカップルに対応するzの値が存在する。

私は、ウェブ上でいくつかの検索とのStackOverflow上の別の質問の後に、次のことを試してみました:

import numpy as np 
import pylab as plt 

data = np.loadtxt('data.d') 
x_list = data[:,0] 
y_list = data[:,1] 
z_list = data[:,2] 

from scipy.interpolate import interp2d 

f = interp2d(x_list,y_list,z_list,kind="linear") 

x_coords = np.arange(min(x_list),max(x_list)+1) 
y_coords = np.arange(min(y_list),max(y_list)+1) 
Z = f(x_coords,y_coords) 

fig = plt.imshow(Z, 
      extent=[min(x_list),max(x_list),min(y_list),max(y_list)], 
      origin="lower") 


fig.axes.set_autoscale_on(False) 
plt.scatter(x_list,y_list,400,facecolors='none') 

plt.show() 

これは、補間を使用し、私はそれは私が必要とする正確に何であることを確認していません。 200 x、yのカップルに対応するzの200個の値だけをプロットする方法はありますか?明らかに私はまだ何らかの「強度関係」が必要ですが、私は200点のz値の「強度」を解釈する方法がない散布図を持つことはできません。

+0

値が補​​間されている理由はありません、かなり明白ですか? f = interp2d(...、Z = f(...、plt.imshow(Z ... –

+0

@ tommy.carstensenはい、私は補間をしたくないのですが、これはplt.imshowではなく、それはうまくいきますが、私は補間を望んでいません。 – johnhenry

+1

'Z = np.reshape(z_list、(max(x_list)、max(y_list)))')を実行することができます。 –

答えて

2

私が理解しているように、z値が色で表される2Dグラフにxyzポイントを表示したいとします。それは解決策は、あなたの散布図でfacecolors=z_listを記述するのと同じくらい簡単です正しい場合:

data = np.random.rand(200,3) 
x_list = data[:,0] 
y_list = data[:,1] 
z_list = data[:,2] 

plt.scatter(x_list,y_list,200,facecolors=z_list) 

plt.colorbar() 
plt.show() 

出力例: enter image description here

+0

ありがとうございます!それは動作し、それは私が欲しいものです。 fac_colors = z_listの対数尺度です。これは、z_listの200個の値がすべて互いに非常に近いためです。したがって、単にレシピを私のケースに適用すると、強度の違いはほとんど見られません – johnhenry