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

如何用Matplotlib将布尔数组的True区域绘制成图表半透明覆盖层

使用Matplotlib实现布尔数组半透明覆盖层

核心实现思路

遍历布尔数组中为True的位置,在对应坐标区域绘制半透明矩形框,叠加在已有图表之上,既保留底层图表可读性,又清晰标记目标区域。

完整示例代码

假设你已有基础图表数据和布尔数组,以下是可直接运行的实现:

import matplotlib.pyplot as plt
import numpy as np

# 生成基础图表数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 生成示例布尔数组:标记x轴[2,4]、[6,8]区间
bool_array = np.zeros(len(x), dtype=bool)
bool_array[(x >= 2) & (x <= 4)] = True
bool_array[(x >= 6) & (x <= 8)] = True

# 绘制基础曲线
fig, ax = plt.subplots()
ax.plot(x, y, label='基础曲线')

# 绘制半透明覆盖层
x_step = x[1] - x[0]  # x轴间隔(确定方框宽度)
y_min, y_max = ax.get_ylim()  # y轴范围(确定方框高度)

for idx, is_marked in enumerate(bool_array):
    if is_marked:
        # 绘制矩形:(x起始, y起始), 宽度, 高度
        rect = plt.Rectangle((x[idx], y_min), x_step, y_max - y_min,
                            color='red', alpha=0.3)  # alpha控制透明度
        ax.add_patch(rect)

# 锁定y轴范围,避免覆盖层干扰
ax.set_ylim(y_min, y_max)
ax.legend()
plt.show()

关键细节说明

  • 坐标匹配:通过布尔数组索引对应x轴坐标,结合x轴步长确定方框宽度,用图表原生y轴范围确保覆盖层填满纵向区域。
  • 透明度调节:alpha参数取值0-1,示例设为0.3,平衡标记可见性与底层图表清晰度。
  • 叠加顺序:先绘制基础图表,再添加矩形补丁,确保覆盖层处于上层。

如果你的布尔数组对应二维区域(如热图标记),只需调整矩形的x、y起始位置和宽高,适配二维坐标逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:15:35