为了账号安全,请及时绑定邮箱和手机立即绑定

twinx 网格线的可见性

twinx 网格线的可见性

尚方宝剑之说 2021-12-17 16:33:02
使用 来创建具有两个不同高度比例的重叠条形图时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()

//img1.sycdn.imooc.com//61bc4b6f0001552e06010430.jpg

查看完整回答
反对 回复 2021-12-17
  • 1 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信