【问题标题】:Align second y axis with the one on the left?将第二个 y 轴与左侧的那个对齐?
【发布时间】:2019-02-12 11:32:08
【问题描述】:

我引入了一个双 y 轴来绘制累积值,但 0 不是从图像底部开始,或者至少与左侧 y 轴的高度相同。

如何把右边的0点和左边的y对齐?

fig, ax = plt.subplots(1,1, figsize=(15,1.5*2.5))
ax.hist(np.arange(100), np.arange(100))
axt = ax.twinx()
axt.plot(np.arange(100), np.arange(100), ls=':', c='r')

不幸的是 set_ylim 它改变了刻度分辨率。

【问题讨论】:

  • 试试axt.set_ylim(ax.get_ylim())

标签: python matplotlib plot yaxis


【解决方案1】:

您可以使用命令将两个 y 轴设置为具有相等的限制

axt.set_ylim(ax.get_ylim())

你已经执行了所有的绘图命令。同样,如果您只希望较低的值(0)重合,您可以这样做

axt.set_ylim([ax.get_ylim()[0],axt.get_ylim()[1]])

这是因为ax.get_ylim() 返回一个元组,其中第一个条目是下限,第二个值是显示轴范围的上限。 set_ylim() 反过来又期望两个元素的可迭代对象(例如列表或元组),您可以动态构建它。

编辑

正如 cmets 中的tmdavison 所指出的,也可以将其中一个限制传递给set_xlim(),从而使另一个限制保持不变(有关详细信息,请参阅documentation)。这是通过关键字bottomtop 完成的。对于OP中的示例,仅将双轴下限设置为0的方式,相应的命令将是

axt.set_ylim(bottom=ax.get_ylim()[0])

【讨论】:

  • 或者您可以只更改下限而保持上限不变。 axt.set_ylim(bottom=0) 会这样做。
  • @tmdavison 好点,我不知道你只能修复一个限制。您介意我在回答中包含您的评论吗?
  • 没问题
猜你喜欢
  • 1970-01-01
  • 2020-05-28
  • 2015-06-10
  • 2022-12-19
  • 1970-01-01
  • 2021-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多