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

如何叠加两张X轴对齐的图表?一张为全区间,一张为子区间

叠加X轴对应图表的实现方案

核心思路

在同一坐标轴上绘制两个数据集,共享同一个X轴:test1覆盖完整X区间(1-9),test2仅绘制其子区间的对应数据点,确保X轴位置完全匹配。

代码实现

先导入所需依赖库:

import pandas as pd
import matplotlib.pyplot as plt

定义示例数据:

test1 = pd.DataFrame(
    {
        'x': [1,2,3,4,5,6,7,8,9],
        'y': [0,1,1,2,1,2,1,1,1]
    }
)

test2 = pd.DataFrame(
    {
        'x': [1,2,4,5,8],
        'y': [3,2,2,3,3]
    }
)

方式1:折线图叠加(带标记点)

清晰展示完整区间与子区间的趋势对比:

# 创建画布与坐标轴
fig, ax = plt.subplots(figsize=(8, 5))

# 绘制完整区间的test1折线
ax.plot(test1['x'], test1['y'], marker='o', label='完整X区间数据(test1)', color='blue')

# 绘制子区间的test2折线(用方形标记突出子区间点)
ax.plot(test2['x'], test2['y'], marker='s', linestyle='--', label='子区间数据(test2)', color='orange', markersize=8)

# 配置图表元素
ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
ax.set_title('完整X区间与子区间数据叠加图')
ax.legend()
ax.grid(alpha=0.3)

plt.show()

方式2:柱状图+折线图组合

适合区分两种数据类型的场景,用双Y轴避免数值范围冲突:

fig, ax1 = plt.subplots(figsize=(8, 5))

# 左侧Y轴绘制test1的柱状图(完整区间)
color = 'tab:blue'
ax1.set_xlabel('X轴')
ax1.set_ylabel('test1 Y值', color=color)
ax1.bar(test1['x'], test1['y'], color=color, alpha=0.6, label='完整X区间数据(test1)')
ax1.tick_params(axis='y', labelcolor=color)

# 右侧Y轴绘制test2的折线(子区间)
ax2 = ax1.twinx()
color = 'tab:orange'
ax2.set_ylabel('test2 Y值', color=color)
ax2.plot(test2['x'], test2['y'], marker='s', color=color, linestyle='--', label='子区间数据(test2)', markersize=8)
ax2.tick_params(axis='y', labelcolor=color)

# 合并两侧图例
lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax1.legend(lines1 + lines2, labels1 + labels2, loc='upper left')

ax1.set_title('完整X区间柱状图与子区间折线图叠加')
plt.show()

关键说明

  • 两种方案均自动保证test2的X点匹配到完整X轴的对应位置,无需额外对齐处理
  • 可根据需求替换图表类型(如散点图、面积图),核心逻辑是在同一坐标轴(或双轴)上加载两个数据集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:05:21