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

如何在Pandas绘图中高亮数组a小于数组b的区域?

嘿,我来帮你搞定这个数组对比绘图的高亮需求!结合你提到的场景(标记a小于b的位置、用DataFrame处理数据),我用matplotlib和pandas写了一套完整的解决方案,完美实现你想要的高亮效果:

实现数组a < 数组b的区域高亮

完整示例代码

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 先模拟你的数据(直接替换成你自己的DataFrame就行)
np.random.seed(42)  # 固定随机种子,方便复现
x = np.arange(0, 10, 0.1)
a = np.sin(x) + np.random.normal(0, 0.2, len(x))
b = np.cos(x) + np.random.normal(0, 0.2, len(x))
df = pd.DataFrame({'横轴': x, '数组a': a, '数组b': b})

# 标记数组a小于数组b的位置
df['a_lt_b'] = df['数组a'] < df['数组b']

# 开始绘图
fig, ax = plt.subplots(figsize=(10, 6))

# 先画出两条对比曲线
ax.plot(df['横轴'], df['数组a'], label='数组a', color='#1f77b4')
ax.plot(df['横轴'], df['数组b'], label='数组b', color='#ff7f0e')

# 关键步骤:填充a < b的区域
# 我们需要找出连续的a < b的区间,逐个填充背景色
mask = df['a_lt_b'].values
start_pos = None

for idx, is_lt in enumerate(mask):
    # 找到区间的起始点
    if is_lt and start_pos is None:
        start_pos = df['横轴'].iloc[idx]
    # 找到区间的结束点,开始填充
    elif not is_lt and start_pos is not None:
        end_pos = df['横轴'].iloc[idx-1]
        # 填充这个区间的垂直区域,用半透明色避免遮挡曲线
        ax.fill_between(
            x=[start_pos, end_pos],
            y1=df['数组a'].min(),
            y2=df['数组b'].max(),
            color='limegreen',
            alpha=0.3
        )
        start_pos = None

# 处理最后一段如果是连续True的情况
if start_pos is not None:
    end_pos = df['横轴'].iloc[-1]
    ax.fill_between(
        x=[start_pos, end_pos],
        y1=df['数组a'].min(),
        y2=df['数组b'].max(),
        color='limegreen',
        alpha=0.3
    )

# 添加图例和标签,让图表更清晰
ax.legend()
ax.set_xlabel('横轴')
ax.set_ylabel('数值')
ax.set_title('数组a小于数组b的区域高亮')

plt.show()

代码说明

  1. 数据准备:我模拟了带点噪声的正弦/余弦曲线作为示例,你直接替换成自己的DataFrame即可,只要包含横轴列和两个数组列。
  2. 标记条件位置:用df['a_lt_b']生成布尔数组,精准标记每个位置是否满足a < b。
  3. 区间填充逻辑:遍历布尔数组,找出连续满足条件的区间,用fill_between填充背景色——这里用了半透明的绿色(alpha=0.3),既突出高亮区域,又不会挡住两条曲线。
  4. 收尾处理:额外处理了最后一段如果是连续满足条件的情况,避免遗漏高亮。

这个方案完全匹配你想要的效果,和你用MS Paint画的示例图一致哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:38:20