gpt4 book ai didi

python - matplotlib 对齐 twinx 刻度线

转载 作者:太空狗 更新时间:2023-10-29 16:54:30 27 4
gpt4 key购买 nike

是否可以绘制具有两个独立 y 轴的图,使刻度线对齐?

下面是解决方案一半的示例。我使用 twinx 将 y 轴加倍,但刻度线没有对齐,网格线在绘图上形成了一个尴尬的模式。有没有办法让刻度线共享相同的位置,但对应不同的 y 值?在下面的示例中,我希望左侧 5 的刻度线与右侧 6 的刻度线处于相同的垂直位置。

import numpy as np

a = np.random.normal(10, 3, size=20)
b = np.random.normal(20, 5, size=40)

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.hist(a)
ax2.hist(b)

histograms

本练习的重点是使网格线在两个轴上重叠。

最佳答案

您需要手动设置 yticks,因为它们是自动计算的,因此会产生变化。添加这样的东西:

ax1.set_yticks(np.linspace(ax1.get_ybound()[0], ax1.get_ybound()[1], 5))
ax2.set_yticks(np.linspace(ax2.get_ybound()[0], ax2.get_ybound()[1], 5))

我们使用轴边界之间的 5 个点数组设置 ytick 位置。由于你有一个直方图,你可以在每种情况下将较低的值设置为零,并且你可能希望上限稍微大一些,所以我会改为

ax1.set_yticks(np.linspace(0, ax1.get_ybound()[1]+1, 5))
ax2.set_yticks(np.linspace(0, ax2.get_ybound()[1]+1, 5))

给出一个图(为了清晰起见,改变了颜色和透明度(alpha)):

enter image description here

关于python - matplotlib 对齐 twinx 刻度线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20243683/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com