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

如何根据DataFrame绘制沿X轴分布的分段异色连续矩形

需求说明

现有如下结构的DataFrame数据集:

Start   End   Color
1        2     Blue
3        4     Red
5        6     Grey
7        8     Blue
9       10     Red
11      12     Grey

需要沿X轴绘制连续矩形:逐行读取数据,每个矩形段的X轴起点取Start列值、终点取End列值,填充色使用对应行Color列指定的颜色,最终效果参考:
连续彩色X轴段示例

实现代码

直接基于matplotlib的矩形补丁逐行绘制即可,无需额外第三方库,完整可运行代码如下:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

# 加载/构造目标数据集
df = pd.DataFrame({
    'Start': [1, 3, 5, 7, 9, 11],
    'End': [2, 4, 6, 8, 10, 12],
    'Color': ['Blue', 'Red', 'Grey', 'Blue', 'Red', 'Grey']
})

# 初始化画布
fig, ax = plt.subplots(figsize=(10, 2))
# 配置矩形Y轴参数:固定高度1,底部对齐y=0位置
y_base = 0
rect_height = 1

# 逐行绘制矩形
for _, row in df.iterrows():
    segment = Rectangle(
        xy=(row['Start'], y_base),
        width=row['End'] - row['Start'],
        height=rect_height,
        color=row['Color'],
        edgecolor='black' # 匹配示例的黑色段间隔边框,不需要可删除
    )
    ax.add_patch(segment)

# 调整坐标轴显示范围,保证所有矩形完整展示
ax.set_xlim(df['Start'].min() - 0.5, df['End'].max() + 0.5)
ax.set_ylim(y_base - 0.2, y_base + rect_height + 0.2)
# 隐藏不需要的Y轴刻度,和示例效果对齐
ax.set_yticks([])

plt.tight_layout()
plt.show()

可调参数说明

  • 修改rect_height数值可调整矩形纵向高度
  • 不需要段间边框直接删除edgecolor='black'参数
  • 要设置色块透明度,给Rectangle传入alpha=0.7这类参数即可
  • X轴刻度范围、标签可通过matplotlib常规轴设置方法按需调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:27:30