我只是想为pyplot图形的 x 轴刻度标签设置不同的旋转。
让我们以这个例子为例:
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()
Run Code Online (Sandbox Code Playgroud)
这段代码给了我们下图:
我的问题不是没有显示整个标签,我知道如何解决它。我的问题是Label 3和Label 4离得太近,而且它们彼此重叠。
我想设置rotation的Label 3在45和其他人在90,但是当我试图分开我lab_ticks和x_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')
Run Code Online (Sandbox Code Playgroud)
有没有人有解决这个问题的技巧?
提前致谢 !
斯米奇
您可以为每个刻度标签单独设置旋转。为此,您需要获取刻度标签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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |