2017-05-03 5 views
1

私はちょうどpyplotという数字のx軸目盛りラベルに対して異なる回転を設定しようとしています。matplotlib.pyplotの目盛りラベルの異なる回転

このexempleてみましょう:

import matplotlib.pyplot as plt 
import numpy as np 

x=np.arange(0,5) 
y=np.arange(0,5) 

plt.xlim(0,4) 
plt.ylim(0,4) 

plt.plot(x,y) 

plt.plot((1,1),(0,4),color='red',lw=1) 
plt.plot((2,2),(0,4),color='red',lw=1) 
plt.plot((2.98,2.98),(0,4),color='red',lw=1) 
plt.plot((3,3),(0,4),color='red',lw=1) 

lab_ticks=['Label 1','Label 2','Label 3','Label 4'] 
x_ticks=[1,2,2.98,3] 

plt.xticks(x_ticks,lab_ticks,rotation=90) 

plt.savefig('im1.png') 

plt.show() 

このコードでは、私たちに次の図を与える:

Image 1

私の問題は、全体のラベルが示されていないということではありません、私は修正する方法を知っていますそれ。私の問題は、Label 3Label 4があまりにも近くにあり、それらがお互いに重なっていることです。

私は45Label 3rotationを設定し、90で他の人にしたいが、私は私のlab_ticksx_ticksを分離しようとしたとき、最後のplt.xticks()が示されている:

lab_ticks=['Label 1','Label 2','Label 4'] 
x_ticks=[1,2,3] 

lab_ticks2=['Label 3'] 
x_ticks2=[2.98] 

plt.xticks(x_ticks,lab_ticks,rotation=90) 
plt.xticks(x_ticks2,lab_ticks2,rotation=45,ha='right') 

enter image description here

誰もがその問題を解決するためのトリックを持っていますか?

ありがとうございます!

スミッチ

+0

あなたは私はあなたが何を意味するか知っている@DavidG彼らはまだ – DavidG

+0

をオーバーラップすることをしなかった場合でも、私はポストを編集しました。第2の 'xticks'に'ラベル= 3 'を関連付けられた値で整列させるために 'ha =' right''を追加しました。 – Smich7

+0

多分それは少し重複し続けるだろうが、私はそれを把握することができます。私はちょうど目盛ラベルの異なった回転を設定するアイデアを見つけたいと思う。 – Smich7

答えて

1

ティックラベルごとに個別にローテーションを設定できます。この目的のためには、ax.get_xticklabels()のティッシュラベルを取得し、.set_rotation(angle)でそれぞれにローテーションを適用する必要があります。

import matplotlib.pyplot as plt 

fig, ax = plt.subplots() 
ax.plot([1,2,3,4],[1,2,1,2]) 

labels=["Label {}".format(i+1) for i in range(4)] 

ax.set_xticks(range(1,5)) 
ax.set_xticklabels(labels) 
for i, t in enumerate(ax.get_xticklabels()): 
    t.set_rotation(i*45) 

plt.show() 

enter image description here

+0

それは素晴らしい答えです。どうもありがとう ! Smich。 – Smich7