私は一生懸命努力しましたが、ここでmatplotlibにこだわっています。mpl docs は私にとって少し混乱するので、見落としてください。私の質問は次のことに関するものです。
関数を使用して対称 n*n 行列を描画
D
しmatshow
ます。それはうまくいきます。(n)アイテムの順序が異なるだけで、同じことをしたい
D
D = [:,neworder] D = [neworder,:]
さて、できれば追加で使用して、ティックにこの新しい順序を再現させるにはどうすればよいMaxNLocator
ですか?
私が理解する限りでは...
set_xticklabels
目盛りが設定されている場所とは関係なく、順番に目盛りにラベルを割り当てますか?!
set_xticks
(mpl docs: 'Set the x ticks with list of ticks') ここで、それが何をするのか本当にわかりません。誰かがそれを正確に説明できますか?これらの関数が私の場合に役立つかどうかはわかりません。一般的な xy プロットと matshow を使用する場合でも、事情が異なる場合があります。
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.gca()
D = np.arange(100).reshape(10,10)
neworder = np.arange(10)
np.random.shuffle(neworder)
D = D[:,neworder]
D = D[neworder, :]
# modify ticks somehow...
ax.matshow(D)
plt.show()
ポールの答えを参照して、私はこのように試したと思います。を使用しneworder
て位置を定義し、それをラベルに使用して、plt.xticks(neworder, neworder)
tick-modifier として追加しました。たとえば、neworder = [9 8 4 7 2 6 3 0 1 5]
これ
は次のとおりです。ラベルの順序は正しいですが、目盛りは正しくありません。ラベルは、目盛りが設定されている場所とは関係なく、正しい要素を個別に表示する必要があります。では、どこが間違っているのでしょうか。