1. ホーム
  2. python

[解決済み] matplotlib imshow() のグラフ軸の値を変更する

2022-11-18 18:37:42

質問

入力データがあるとします。

data = np.random.normal(loc=100,scale=10,size=(500,1,32))
hist = np.ones((32,20)) # initialise hist
for z in range(32):
    hist[z],edges = np.histogram(data[:,0,z],bins=np.arange(80,122,2))

を使ってプロットすることができます。 imshow() :

plt.imshow(hist,cmap='Reds')

を取得する。

しかし、x軸の値が入力データと一致していません(平均値100、範囲80~122など)。そこで、X軸の値を edges .

試してみました。

ax = plt.gca()
ax.set_xlabel([80,122]) # range of values in edges
...
# this shifts the plot so that nothing is visible

ax.set_xticklabels(edges)
...
# this labels the axis but does not centre around the mean:

<イグ

私が使用している入力データを反映させるために軸の値を変更する方法について、何かアイデアはありますか?

どのように解決するのですか?

を変更しないようにします。 xticklabels そうでなければ、例えばヒストグラムを追加データでオーバープロットした場合、非常に混乱する可能性があります。

グリッドの範囲を定義することは、おそらく最も良い方法です。 imshow を追加することで可能です。 extent キーワードを追加する。この方法では、軸は自動的に調整されます。もし、ラベルを変更したい場合は set_xticks を使うことになるでしょう。ラベルを直接変更するのは最後の手段であるべきです。

fig, ax = plt.subplots(figsize=(6,6))

ax.imshow(hist, cmap=plt.cm.Reds, interpolation='none', extent=[80,120,32,0])
ax.set_aspect(2) # you may also use am.imshow(..., aspect="auto") to restore the aspect ratio

<イグ