matplotlib 如何水平显示Y轴标签

xe55xuns  于 2022-11-09  发布在  其他
关注(0)|答案(3)|浏览(162)

我正在使用matplotlib / pylab Python模块创建非常简单的图表。标记Y轴的字母“y”在其一侧。如果标签较长(例如单词),则会出现这种情况,以免将图的外部向左扩展太多。但是对于一个字母的标签,这是没有意义的;标签应直立。
我怎样才能水平地显示“y”?

ecfdbz9o

ecfdbz9o1#

很简单。打印标签后,您可以简单地更改旋转:

import matplotlib.pyplot as plt

plt.ion()
plt.plot([1, 2, 3])

plt.ylabel("y", rotation=0)
# or
# h = plt.ylabel("y")
# h.set_rotation(0)

plt.draw()
93ze6v8z

93ze6v8z2#

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

ax.set_ylabel('abc', rotation=0, fontsize=20, labelpad=20)

请注意,通常labelpad也需要手动调整-否则“abc”会侵入图中。
根据简单的实验,我猜测labelpad是刻度标签的边界框和y标签中心之间的偏移量。(因此,不完全是名称所暗示的填充-如果这是到标签的边界框差距,则会更直观。

6gpjuf90

6gpjuf903#

Axes对象定义了yaxis(和xaxis),它具有label属性,可以使用set()方法进行更改。因此,例如,为了改变旋转、水平对齐等。在y标记中,可以使用以下内容:

ax.yaxis.label.set(rotation='horizontal', ha='right');

如果使用外部模块(如librosa、perfplot等)绘制图形,这一点尤其有用。其中,y标签设置在模块的盖下,并且您想要旋转它。

x = y = range(3)
plt.plot(x, y)
plt.ylabel('y label')

plt.gca().yaxis.label.set(rotation='horizontal', ha='right');

相关问题