2016-09-05 17 views
1

私は値をN座標に格納するNx3配列を持っています。第1列と第2列はそれぞれx座標とy座標に対応し、第3列はその座標の値を表します。私は2D強度プロットをプロットしたいのですが、それを行う最良の方法は何ですか?matplotlibに2D強度プロットをプロットする方法は?

座標が均等に配置されている場合は、meshgridを使用してimshowを使用できますが、データに座標が均等に配置されていません。さらに、配列はN〜100000と非常に大きく、値(3番目の列)は数桁にわたっています(logplotを使用する必要がありますか?)。このようなグラフをプロットする最良の方法は何ですか?

私がテストしていませんでした

答えて

2
あなたは(100×100と言う)均一のグリッドにすべての 100000ポイントであなたのデータを補間する griddataを使用し、色の対数スケールですべてをプロットすることができ

x = data[:,0] 
y = data[:,1] 
z = data[:,2] 

# define grid. 
xi = np.linspace(np.min(x),np.max(x),100) 
yi = np.linspace(np.min(y),np.max(y),100) 

# grid the data. 
zi = griddata(x,y,z,xi,yi,interp='linear') 

#pcolormesh of interpolated uniform grid with log colormap 
plt.pcolormesh(xi,yi,zi,norm=matplotlib.colors.LogNorm()) 

plt.colormap() 
plt.show() 

これは基本的なアイデアは正しいはずです。これには、元の(大)データセットを知る必要がなく、グリッドデータxi、yi、ziで簡単に作業できるという利点があります。

代替は

plt.scatter(x, y, c=z,edgecolors='none', norm=matplotlib.colors.LogNorm()) 

、散布を着色することであり、それらは、連続画像を構成するように、点の外側の縁を切ります。

関連する問題