You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matplotlib中基于右侧Y轴设置水平网格线?

在Matplotlib中基于右侧Y轴绘制水平网格线的方法

默认情况下,ax.grid(axis="y") 绘制的水平网格线是绑定左侧Y轴的。要实现绑定右侧Y轴的水平网格线,有两种实用方法:


方法一:手动绘制网格线

通过获取右侧Y轴的刻度位置,手动绘制对应水平网格线,同时关闭左侧轴的Y网格:

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据
x = np.linspace(0, 10, 100)
y_left = np.sin(x)
y_right = np.exp(x/10)

# 创建基础轴和双Y轴
fig, ax_left = plt.subplots()
ax_right = ax_left.twinx()

# 绘制左右轴数据
ax_left.plot(x, y_left, color='tab:blue')
ax_right.plot(x, y_right, color='tab:red')

# 配置轴样式
ax_left.set_ylabel('左侧Y轴', color='tab:blue')
ax_left.tick_params(axis='y', labelcolor='tab:blue')
ax_right.set_ylabel('右侧Y轴', color='tab:red')
ax_right.tick_params(axis='y', labelcolor='tab:red')

# 关闭左侧轴的Y网格
ax_left.grid(False, axis='y')

# 获取右侧Y轴刻度,手动绘制水平网格线
right_yticks = ax_right.get_yticks()
for tick in right_yticks:
    ax_left.axhline(y=tick, color='gray', linestyle='--', alpha=0.7)

plt.show()

方法二:利用右侧轴的网格功能

直接开启右侧轴的Y网格,通过调整轴层级避免网格被绘图覆盖:

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据
x = np.linspace(0, 10, 100)
y_left = np.sin(x)
y_right = np.exp(x/10)

# 创建基础轴和双Y轴
fig, ax_left = plt.subplots()
ax_right = ax_left.twinx()

# 绘制左右轴数据
ax_left.plot(x, y_left, color='tab:blue')
ax_right.plot(x, y_right, color='tab:red')

# 配置轴样式并关闭左侧Y网格
ax_left.set_ylabel('左侧Y轴', color='tab:blue')
ax_left.tick_params(axis='y', labelcolor='tab:blue')
ax_left.grid(False, axis='y')

ax_right.set_ylabel('右侧Y轴', color='tab:red')
ax_right.tick_params(axis='y', labelcolor='tab:red')

# 开启右侧轴Y网格,调整层级让网格显示在绘图下方
ax_right.grid(True, axis='y', color='gray', linestyle='--', alpha=0.7)
ax_right.set_zorder(ax_left.get_zorder() - 1)
ax_left.patch.set_visible(False)  # 隐藏左侧轴背景,露出网格

plt.show()

内容的提问来源于stack exchange,提问作者showkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 00:57:03