回転ソリューションhereおよび/またはhereは、すべて同じ長さのラベルに対してうまく機能します。しかし、位置はラベルの中央に基づいているように見えるので、ラベル名の長さが不均一な場合、間隔はオフになります。matplotlibおよび/またはseabornでの回転軸ラベルの均等間隔
次のコードは、不均一な間隔の外観になります。
frame = pd.DataFrame(np.random.random((10, 4)), columns=[
'Medium Name', 'Really Really Long Name', 'Name',
'Ridiculously Good Looking and Long Name'
])
ax = sns.barplot(data=frame)
plt.xticks(rotation=45)
私はthis questionに類似の間隔を調整しようとしたが、それはそれは右見て取得するには迷惑な手動当て推量プロセスです。 ax.axes.set_xticks([-0.2,0.6,2,2.3])
行を追加すると、適切な間隔(列の中央の文字列の終わり)がおおよそ作成されますが、中央ではなくラベルの最後に基づいて自動的に配置する方法がありますか?あるいは、すべてのラベルが同じ長さになるように文字列をラップするのでしょうか?
編集: も、合理的な長さのラベルに何が起こるか表示するには:
cols = ['Tag' + str(i) for i in range(8)]
cols[2] = 'Not Crazy Long'
cols[4] = 'Also Not Too Bad'
frame = pd.DataFrame(np.random.random((10, 8)), columns=cols)
ax = sns.barplot(data=frame)
plt.xticks(rotation=35)
私は、テキストの折り返しソリューションを好きですが、@mwaskomが指摘したように、私は私が本当にしたいと思います(テキストラップを使用していても)ラベルの「右横方向の位置合わせ」。これは可能ですか?あなたは、列の平均長さを取得し、あなたのラッピング値としてそれを使用できtextwrap
を使用したい場合は
問題がない間隔があるということです不均等であるが、水平に位置合わせされたレベルを有する。私はあなたが右の水平方向の整列を望んでいると思います。長いラベルが付いたバープロットの場合は、水平のバーを描く方が良い場合があります。アラインメントが正しい場合でも、長いラベルを読むために頭を傾けなければならないからです。 – mwaskom
PPSこれは「海中の」質問ではありません。目盛りラベルの向きや位置合わせを指定する時点では、matplotlibに関する質問であり、海底で作ったプロットは無関係です。 – mwaskom
@mwaskomに感謝します。私は、水平のバープロットとシーボーンの質問についてあなたのポイントを見ています - それは海底でそれを行う方法であることを望んでいましたが、それはmatplotlibを直接扱うよりもずっとうれしいからです:) – elphz