22

いくつかのデータを散布図でプロットしようとしていました。私のコードは

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()

結果は ここに画像の説明を入力

今、いくつかのデータで imshow を試してみようと思いついたので、散乱円が好きではありませんでした。だから私はこれを試しました

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()

この結果: ここに画像の説明を入力

私の問題は明らかに、なぜimshow()データを反転させるのですか? ここで正確に何が起こりますか?

PS:誰かがそれらで遊びたい場合に備えて、ここにデータがあります

4

4 に答える 4

44

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

デフォルトは、通常は左上隅から始まるイメージのプロットに適しています。ほとんどの行列プロットでは、origin="lower"

于 2013-01-14T14:22:25.277 に答える
4

ひっくり返ったのではなく、ひっくり返しただけです。デフォルトの原点はimshow左下ではなく左上です。imshowオリジンを指定するパラメーターがあり、origin という名前です。または、 でデフォルトを設定することもできますmatplotlib.conf

于 2013-01-14T14:22:07.227 に答える
2

pcolormeshまたはcontourfの形式のデータをプロットする場合は、使用を検討してくださいf(X, Y) = ZimshowデータをプロットするだけZで、スケーリングとリサンプリングは手動で行われます。

于 2015-07-18T13:14:22.060 に答える