如何在matplotlib/pylab图表中水平打印Y轴标签?

Kar*_*l D 49 python label matplotlib

我正在使用matplotlib/pylab Python模块创建非常简单的图表.标记Y轴的字母"y"位于其侧面.如果标签较长(例如单词),您会期望这样,以免将图表的外部向左延伸太多.但对于单字母标签,这没有意义,标签应该是正直的.我的搜索空白了.如何水平打印"y"?

Jen*_*unk 87

这很简单.绘制标签后,您只需更改旋转:

from matplotlib import pyplot as plt
plt.ion()
plt.plot([1,2,3])
h = plt.ylabel('y')
h.set_rotation(0)
plt.draw()
Run Code Online (Sandbox Code Playgroud)

或者,您可以将旋转作为参数传递,即

plt.ylabel('y',rotation=0)
Run Code Online (Sandbox Code Playgroud)

  • 另外,您可以将旋转直接传递给`plt.ylabel`.(例如`plt.ylabel('y',rotation = 0)`) (12认同)
  • 那就对了.我没有查看文档,只是在句柄上使用了点完成 (2认同)

Evg*_*eev 45

当我们使用特定的轴对象时,扩展已接受的答案ax:

ax.set_ylabel('abc', rotation=0, fontsize=20, labelpad=20)
Run Code Online (Sandbox Code Playgroud)

请注意,通常labelpad需要手动调整 - 否则"abc"将侵入绘图.

从简短的实验中我猜测labelpad是刻度标签的边界框和y标签的中心之间的偏移.(所以,并不是名称所暗示的填充 - 如果这是与标签边界框的间隙,那将更直观.)

  • 为了更清晰,你可以考虑`rotation ='horizo​​ntal'.此外,您可以添加参数`ha ='right'`,而不是选择任意的`labelpad`(然后需要根据结果进行调整),其中`ha`是`horizo​​ntalalignment`关键字的方便缩写. (23认同)
  • 和“va=”center“”代表“verticalalignment”。 (6认同)