matplotlib 旋转y轴标签

fivyi3re  于 2023-06-23  发布在  其他
关注(0)|答案(2)|浏览(147)

我正在尝试旋转Y轴的标题,使其水平。我不希望刻度标签水平只是标题的Y轴。我必须使用子情节,因为我一次制作多个情节。下面是我尝试旋转Y轴标题的脚本。

import matplotlib.pyplot as plt
import sys

fig, ax = plt.subplots()

ax.set_title(r'$\alpha$ > \beta_i$', fontsize=20)
ax.set(xlabel='meters $10^1$', ylabel=r'Hertz $(\frac{1}{s})$')
ax.set(xlabel=r's(t) = \mathcal(A)\/\sin(2 \omega t)', ylabel=r'Hertz $(\frac{1}{s})$')
ax.set(ylabel="North $\uparrow$",fontsize=9,rotate=90)
plt.show()

当我运行它时,我得到一个错误:
TypeError:没有AxesSubplot属性“rotate”
我怎样才能调整这个程序,使Y轴水平旋转?

vhmi4jdf

vhmi4jdf1#

通过使用ax.set,您试图设置axes的属性,而不是ylabel文本对象的属性。
您可以使用xlabelylabel来创建x和y标签,并传入kwargs来修改它们的外观,而不是使用ax.set。属性名也是rotation而不是rotate。此外,您还需要将rotation设置为0,因为默认值为90,这就是它首先旋转的原因。

plt.title(r'$\alpha > \beta_i$', fontsize=20)
plt.xlabel(r'meters $10^1$', fontsize=9)
plt.ylabel("North $\uparrow$", fontsize=9, rotation=0)

thtygnil

thtygnil2#

而另一个answer可以工作,它需要从显式的Axes接口切换到隐式的pyplot接口,这是不应该做的。
set_ylabel()

**kwargs Text属性:文字特性控制标签的外观。

matplotlib.text
position设置文本的(x,y)位置。xy(float, float)
rotation设置文本的旋转。sfloat or {'vertical', 'horizontal'}。数学上正方向(逆时针)的旋转Angular (以度为单位)。“水平”等于0,“垂直”等于90。
rotation_mode设置文本旋转模式。m{None, 'default', 'anchor'} .如果是None'default',文本将首先旋转,然后根据其水平和垂直对齐方式对齐。如果为'anchor',则在旋转之前进行对齐。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

ax.set_title(r'$\alpha > \beta_i$', fontsize=20)
ax.set(xlabel='meters $10^1$')
ax.set_ylabel(r'$North \uparrow$', fontsize=9, rotation=0)
plt.show()

相关问题