在Matplotlib中水平对齐两个Y轴的Y标签

2024-09-27 02:27:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个双轴打印,y标签位于轴的顶部,高度相同

fig, ax = plt.subplots(1, 1)
ax.plot(data_left.index, data_left, label='Preis')
ax.set_ylabel('Preis', fontsize=label_size, rotation=0)
ax.yaxis.set_label_coords(0, 1.01)
ax2 = ax.twinx()
ax2.plot(data_right.index, data_right, label='KGV')
ax2.set_ylabel('KGV', fontsize=label_size, rotation=0)
ax2.yaxis.set_label_coords(1, 1.01)

因此,我手动将两个轴的y标签坐标高度设置为1.01,但它们是在完全不同的位置创建的

enter image description here

当然,在找到匹配的位置之前,我可以处理这些值,但我希望对不同的数据使用此代码,并将标签自动放置到正确的位置

  • 为什么这些标签在完全不同的y坐标上
  • 如何对齐它们的y位置,以便对齐适用于任何数据集和标签

Tags: datasizeindex高度plot标签axleft
1条回答
网友
1楼 · 发布于 2024-09-27 02:27:38

这将按照您的预期工作(旋转模式=锚定+垂直对齐=基线)

fig, ax = plt.subplots(1, 1)
ax.plot(data_left.index, data_left, label='Preis')
ax.set_ylabel('Preis', fontsize=20, rotation=0, rotation_mode="anchor", verticalalignment='baseline')
ax.yaxis.set_label_coords(0, 1.01)
ax2 = ax.twinx()
ax2.plot(data_right.index, data_right, label='KGV')
ax2.set_ylabel('KGV', fontsize=20, rotation=0, rotation_mode="anchor", verticalalignment='baseline')
ax2.yaxis.set_label_coords(1, 1.01)

问题是轴心点不在文本的中心,而是在轴心上

before rotation

after rotation

相关问题 更多 >

    热门问题