使用 来创建具有两个不同高度比例的重叠条形图时Axes.twinx(),我无法将“双”轴集的垂直网格线设置为可见。水平线虽然工作正常。关于如何解决这个问题的任何想法?下面是一些示例代码,说明了我想做什么和我不能做什么。正如所见,垂直网格线被 的红色条隐藏ax2,而我希望网格线通过所有条可见。# Create figure and figure layoutax1 = plt.subplot()ax2 = ax1.twinx()# Example datax = [0, 1, 2, 3, 4, 5]h1 = [55, 63, 70, 84, 73, 93]h2 = [4, 5, 4, 7, 4, 3]# Plot barsh1_bars = ax1.bar(x, h1, width=0.6, color='darkblue')h2_bars = ax2.bar(x, h2, width=0.6, color='darkred')# Set y limits and grid visibilityfor ax, ylim in zip([ax1, ax2], [100, 10]): ax.set_ylim(0, ylim) ax.grid(True)出现错误是因为 的垂直网格线ax2未设置为可见。这可以通过设置来测试ax1.grid(False),在这种情况下,只有水平网格线。我已经试过的所有组合ax1.xaxis.grid(True),ax1.yaxis.grid(True),ax2.xaxis.grid(True)并ax2.yaxis.grid(True)没有任何的运气。对此事的任何帮助深表感谢!
1 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
您可以恢复 ax1 和 ax2 的角色,这样蓝色条在 ax2 上,红色条在 ax1 上。然后您需要将双轴放在背景中,并在图的另一侧勾选相应的 y 轴。
import matplotlib.pyplot as plt
# Create figure and figure layout
ax1 = plt.subplot()
ax2 = ax1.twinx()
# Example data
x = [0, 1, 2, 3, 4, 5]
h1 = [55, 63, 70, 84, 73, 93]
h2 = [4, 5, 4, 7, 4, 3]
# Plot bars
h1_bars = ax2.bar(x, h1, width=0.6, color='darkblue')
h2_bars = ax1.bar(x, h2, width=0.6, color='darkred')
# Set y limits and grid visibility
for ax, ylim in zip([ax1, ax2], [10, 100]):
ax.set_ylim(0, ylim)
ax.grid(True)
ax1.set_zorder(1)
ax1.patch.set_alpha(0)
ax2.set_zorder(0)
ax1.yaxis.tick_right()
ax2.yaxis.tick_left()
plt.show()
添加回答
举报
0/150
提交
取消