Python- Matplotlib将图形标题移动到y轴

quhf5bfb  于 2023-08-06  发布在  Python
关注(0)|答案(3)|浏览(108)

我目前正在使用Python中的matplotlib来绘制一些数据,但是我希望图形的标题位于Y轴上,因为没有足够的空间来放置一个图形的标题和另一个图形的x轴标签。我知道我可以将hspace设置为一个更大的数字,但是我不想这样做,因为我计划将几个图表堆叠在一起,如果我调整hspace,那么图表将非常短,难以阅读。

的数据
这是我的代码

#EXAMPLE CODE
import numpy as np
import matplotlib.pyplot as plt

fig=plt.figure()
rect = fig.patch
rect.set_facecolor('#31312e')

x = [1,2,3,4,5,6,7,8]
y = [4,3,8,2,8,0,3,2]
z = [2,3,0,8,2,8,3,4]

ax1 = fig.add_subplot(2,1,1, axisbg='gray')
ax1.plot(x, y, 'c', linewidth=3.3)
ax1.set_title('title', color='c')
ax1.set_xlabel('xlabel')
ax1.set_ylabel('ylabel')

ax2 = fig.add_subplot(2,1,2, axisbg='gray')
ax2.plot(x, z, 'c', linewidth=3.3)
ax2.set_xlabel('xlabel')
ax2.set_ylabel('ylabel')


plt.show()

字符串
提前感谢

ybzsozfc

ybzsozfc1#

试试这个:

ax1.set_title('title1', color='c', rotation='vertical',x=-0.1,y=0.5)
ax2.set_title('title2', color='c', rotation='vertical',x=-0.1,y=0.5)

字符串

9fkzdhlc

9fkzdhlc2#

matplotlib图中的所有文本元素都有get_positionset_position方法。如果你捕获坐标轴标签的坐标,并使用它们来设置标题的坐标,再加上一点偏移量,这是非常简单的。(编辑:坐标的单位是图形宽度和高度的分数。即(0,0)是左下角,(1,1)是右上角)

fig, axes = plt.subplots(nrows=2)
ax0label = axes[0].set_ylabel('Axes 0')
ax1label = axes[1].set_ylabel('Axes 1')

title = axes[0].set_title('Title')

offset = np.array([-0.15, 0.0])
title.set_position(ax0label.get_position() + offset)
title.set_rotation(90)

fig.tight_layout()

字符串


的数据

8yoxcaq7

8yoxcaq73#

我也在尝试同样的事情,我发现ax.annotate很有用。
示例:

ax1.annotate('vertical title', (-0.65, 0.5), xycoords = 'axes fraction', rotation = 90, va = 'center', fontweight = 'bold', fontsize = 10)

字符串
坐标设置为axes fraction,因此x位置参数(此处为-0.65)将文本左侧设置为Y轴,因为它是一个负值,并将Y位置(此处为0.5)设置为Y轴的中间。

相关问题