それについては他にも質問がありますが、私の正確な質問はどれも解決できません。もちろんMatplotlib twinx-yticklabelsとyticksとのアラインメント
import matplotlib.pyplot as plt
calendar = [[1,0,0,1,1,0,1],[0,0,1,1,1,0,1]]
fig, ax = plt.subplots()
namelist = ['alpha','beta']
yticks = [n for n in range(len(namelist))]
ax.set_yticks(yticks)
ax.set_yticklabels(namelist)
ax2 = ax.twinx()
ax2.set_yticks(ax.get_yticks())
ax2.set_yticklabels(['gamma','delta'])
im = ax.imshow(calendar, interpolation='none', cmap='summer')
plt.show()
アッパーはちょうど非常に単純化したバージョンですが、問題を見るのに十分でなければならない2つの「AX2ライン」をコメントアウトすると、私が好きなプロットがあるが、追加するとき2番目のy軸は、私が望んでいないようにプロットがサイズ変更されます。私はアルファ/ベータをガンマ/デルタと同じ高さにしたい(空白が残らないようにしたい)が、今はかなり時間がかかっている。私はget_yticks()
機能を試しましたが(いくつかの同様の質問で提案されたように)、それは役に立たなかった。 ありがとうございます!
EDIT:1つの小さなディテール:解決策は、そのツインカウンターパートを前面にして、より多くのy値(アルファ、ベータ、デルタなど)を処理するという意味で拡張可能でなければなりません。
EDIT 2:(新しい質問を投稿すると便利だったのでわかりませんでしたので、ここで尋ねます:)今はグリッドを追加しようとしています。私はもう一度たくさん試しましたが、何も助けてくれないようです。私はy軸グリッドを得ることができます。次のコードを確認してください(とアンコメントこれらの行と同じことをしてみてください!):
import matplotlib.pyplot as plt
calendar = [[1,0,0,1,1,0,1],[0,0,1,1,1,0,1]]
fig, ax = plt.subplots()
namelist = ['alpha','beta']
yticks = [n for n in range(len(namelist))]
ax.set_xticks([num for num in range(len(calendar[0]))])
ax.set_xticks([num-0.5 for num in range(len(calendar[0]))],minor=True)
ax.set_yticks(yticks)
ax.set_yticks([num-0.5 for num in range(len(namelist))],minor=True)
ax.set_yticklabels(namelist)
im = ax.imshow(calendar, interpolation='none', cmap='summer')
ax.set_adjustable('box-forced')
ax.xaxis.grid(which='major',alpha=1,color='k',lw=2)
ax.xaxis.grid(which='minor',alpha=1,color='k',lw=2)
ax.yaxis.grid(which='minor',alpha=1,color='k',lw=2)
#ax2 = ax.twinx()
#ax2.set_yticks(ax.get_yticks())
#ax2.set_yticklabels(['gamma','delta'])
#im2 = ax2.imshow(calendar, interpolation='none', cmap='summer')
#ax2.set_adjustable('box-forced')
plt.show()
私はグリッドが表示されるまでに取得できますか?ここにどのように(ax2なし)の写真。基本的には、コードは正確に私には同じだが、右に2番目のラベルを付けるべきではありませんか?あなたが欲しいものを得るために
おかげで、私はすでにそれが解決していない緑色/黄色の部分の上と下の空白の問題。 – famfop
@famfopああ、分かります... –
ありがとう!偉大な答え:短いとオンポイント! – famfop