30

1 か月前に matplotlib を使い始めたので、まだ学習中です。
matshow でヒートマップを作成しようとしています。私のコードは次のとおりです。

data = numpy.array(a).reshape(4, 4)  
cax = ax.matshow(data, interpolation='nearest', cmap=cm.get_cmap('PuBu'), norm=LogNorm())  
cbar = fig.colorbar(cax)

ax.set_xticklabels(alpha)  
ax.set_yticklabels(alpha)

ここで、alpha は 4 つのフィールドを持つ django のモデルです: 'ABC'、'DEF'、'GHI'、'JKL'

理由はわかりませんが、ラベル「ABC」が表示されず、最後のセルにラベルがありません。
誰かが私のスクリプトを「ABC」に表示するように変更する方法の手がかりを持っているなら、私は感謝します:)

4

2 に答える 2

61

何が起こっているのかというと、matshow を使用すると、xticks が実際に表示された図の外に​​出てしまうということです。(これがなぜなのか正確にはわかりませんが、matshowを使用したことはほとんどありません。)

これを実証するには、 の出力を見てくださいax.get_xticks()。あなたの場合、それはarray([-1., 0., 1., 2., 3., 4.])です。したがって、xtick ラベルを設定すると、"ABC" は <-1, -1> になり、図には表示されません。

最も簡単な解決策は、ラベルのリストに空白のラベルを追加することです。

ax.set_xticklabels(['']+alpha)
ax.set_yticklabels(['']+alpha)

完全な例として:

import numpy as np
import matplotlib.pyplot as plt

alpha = ['ABC', 'DEF', 'GHI', 'JKL']

data = np.random.random((4,4))

fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(data, interpolation='nearest')
fig.colorbar(cax)

ax.set_xticklabels(['']+alpha)
ax.set_yticklabels(['']+alpha)

plt.show()

マットショーの例

于 2010-08-20T15:33:21.560 に答える
7

これを行うもう 1 つの方法は、目盛りを指定してから、対応するラベルを設定することです。その後、余分な範囲外のティックについて心配する必要はありません。これは多くの matplotlib デモに登場します。ax.set_xticksしたがって、ここで、余分な呼び出しに注意してくださいax.set_yticks

import numpy as np
import matplotlib.pyplot as plt

alpha = ['ABC', 'DEF', 'GHI', 'JKL']

data = np.random.random((4,4))

fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(data, interpolation='nearest')
fig.colorbar(cax)

xaxis = np.arange(len(alpha))
ax.set_xticks(xaxis)
ax.set_yticks(xaxis)
ax.set_xticklabels(alpha)
ax.set_yticklabels(alpha)

plt.show()

ここに画像の説明を入力

于 2020-12-04T23:02:22.797 に答える