Matplotlib如何将图表标题放置在y轴侧边而非顶部?
Matplotlib y轴侧边标题最优实现方案
- 场景1:仅需要给y轴添加专属说明标题
直接用内置的set_ylabel()方法即可,无需手动调整坐标,会自动适配图表尺寸、轴范围的变化:
import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.plot(range(10)) # rotation控制文字旋转角度,labelpad控制标题和y轴的间距 ax.set_ylabel("Y轴侧边标题", rotation=90, labelpad=15, fontsize=12) plt.show()
- 场景2:需要在y轴侧边放置自定义位置的浮动标题
你目前用的set_title()手动调整参数的方案已经是最优解,只需额外指定transform=ax.transAxes参数,将坐标参照系改为轴的归一化比例坐标(取值范围0~1,对应轴的边界),避免硬编码数据坐标导致的图表缩放、数据范围修改后标题跑位的问题:
import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.plot(range(10)) # x=-0.15表示在y轴左侧15%轴宽度的位置,y=0.5表示垂直居中 ax.set_title("侧边自定义标题", rotation="vertical", x=-0.15, y=0.5, transform=ax.transAxes) plt.show()
- 场景3:多子图场景下给整列子图加统一侧边标题
直接用Figure级的fig.supylabel()方法即可,无需逐个子图设置:
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 1, figsize=(6, 8)) axs[0].plot(range(10)) axs[1].plot(range(10, 20)) # x参数控制标题和画布左侧的距离 fig.supylabel("整列子图统一侧边标题", x=0.02, fontsize=14) plt.tight_layout() plt.show()
内容的提问来源于stack exchange,提问作者BaRud
相关产品推荐
相关产品推荐

