如何根据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列指定的颜色,最终效果参考:
实现代码
直接基于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
相关产品推荐
相关产品推荐

