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

如何用Matplotlib绘制双x/y轴且网格基于第一轴的空白图表?

双轴空白图表解决方案(网格基于第一组轴)

直接用以下代码即可实现需求:既保留基于第一组x/y轴的网格,又能显示第二组轴的轴线,无需手动修改图片:

import matplotlib.pyplot as plt

# 创建画布与第一组坐标轴(用于抄录数据)
fig, ax1 = plt.subplots(figsize=(8, 6))

# 设置第一组轴的刻度范围(根据实际数据调整)
ax1.set_xlim(0, 100)
ax1.set_ylim(0, 200)

# 开启第一组轴的网格,网格将完全基于第一组轴
ax1.grid(True, linestyle='--', alpha=0.7)

# 创建顶部第二x轴(用于计算验证)
ax2 = ax1.twiny()
ax2.set_xlim(0, 50)  # 第二x轴的范围,按需调整
ax2.set_frame_on(False)  # 关闭第二轴的完整框架,避免覆盖网格
# 手动开启第二x轴的顶部轴线
ax2.spines['top'].set_visible(True)
# 设置第二x轴仅在顶部显示刻度与标签
ax2.tick_params(axis='x', top=True, bottom=False, labeltop=True)

# 创建右侧第二y轴(用于计算验证)
ax3 = ax1.twinx()
ax3.set_ylim(0, 100)  # 第二y轴的范围,按需调整
ax3.set_frame_on(False)  # 关闭第二轴的完整框架
# 手动开启第二y轴的右侧轴线
ax3.spines['right'].set_visible(True)
# 设置第二y轴仅在右侧显示刻度与标签
ax3.tick_params(axis='y', right=True, left=False, labelright=True)

# 隐藏第一组轴的顶部/右侧轴线,避免重复显示
ax1.spines['top'].set_visible(False)
ax1.spines['right'].set_visible(False)

plt.show()

关键逻辑说明:

  • 先基于第一组轴ax1开启网格,确保网格完全贴合抄录数据用的轴
  • 对第二组轴设置set_frame_on=False,避免其完整框架覆盖第一轴的网格
  • 手动开启第二组轴需要显示的轴线(顶部x轴、右侧y轴),并设置刻度仅在对应侧显示
  • 隐藏第一组轴的冗余轴线,让图表布局更整洁

你可以根据实际需求调整轴的刻度范围、网格样式(比如linestyle、alpha参数)以及刻度标签的显示状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 05:58:25