2013-01-14 16 views
17

私はスキャッターでいくつかのデータをプロットしようとしていました。私のコードはMatplotlib imshow:データは回転していますか?

import matplotlib.pyplot as plt 
import matplotlib as mpl 
import numpy as np 
from scipy.interpolate import griddata 
data = np.loadtxt('file1.txt') 
x = data[:,0] 
y = data[:,1] 
z = data[:,2] 
plt.scatter(x, y, c=z, s=100, cmap=mpl.cm.spectral) 
cbar=plt.colorbar() 
s=18 
plt.ylabel(r"$a_v$", size=s) 
plt.xlabel(r"$a_{\rm min}$", size=s) 
plt.xlim([x.min(),x.max()]) 
plt.ylim([y.min(),y.max()]) 
plt.show() 

結果が今 enter image description here

です私はいくつかのデータを、私は散乱の円を好きではなかったsoinceとimshowをしようとする考えになりました。なぜimshow()データを反転ん enter image description here

私の問題はobvioslyです: は、だから私はこの結果にこの

from matplotlib.mlab import griddata 
import matplotlib.pyplot as plt 
data = np.loadtxt('file1.txt') 
x = data[:,0] 
y = data[:,1] 
z = data[:,2] 

N = 30j 
extent = (min(x), max(x), min(y), max(y)) 

xs,ys = np.mgrid[extent[0]:extent[1]:N, extent[2]:extent[3]:N] 

resampled = griddata(x, y, z, xs, ys) 

plt.imshow(resampled.T, extent=extent) 
s=18 
plt.ylabel(r"$a_v$", size=s) 
plt.xlabel(r"$a_{\rm min}$", size=s) 
plt.xlim([x.min(),x.max()]) 
plt.ylim([y.min(),y.max()]) 
cbar=plt.colorbar() 
plt.show() 

を試してみましたか?ここではどうなりますか?

PS:ここdataは、誰かがそれがちょうど反転し、反転していない彼らと

答えて

31

imshowのキーワード引数を見てください。 originがあります。デフォルトは "upper"ですが、 "lower"が必要です。

デフォルトは、通常は左上隅から始まる画像をプロットするのに適しています。 origin="lower"

+0

は私の人生を保存した と私の "おそらく"偽の機能をデバッグするのに時間がかかりました – n3rd

4

を再生したい場合には、あります。 imshowの原点は、左下ではなく左上にデフォルト設定されています。 imshowには原点を指定するパラメータがあり、原点と呼ばれます。あるいは、matplotlib.confにデフォルトを設定することもできます。

+0

グローバルにデフォルトを変更することは、他の人のコードを実行したい場合には悪い考えです。 – Mark

1

ところで、円ではなく散布図で四角形を描き、元のコードをそのまま使うことができます。

2

f(X, Y) = Zという形式のデータをプロットする場合は、pcolormeshまたはcontourfを使用することを検討してください。 imshowは単にデータZをプロットし、スケーリングとリサンプリングは手動で行う必要があります。

関連する問題