Excel如何制作分段断开的broken area chart
分隔式(Broken断开分段)面积图实现方法
这个效果不需要特殊定制图表类型,靠数据层面的小调整就能在绝大多数可视化工具里实现,核心逻辑和操作方法如下:
核心实现逻辑
普通面积图默认会把同一系列的所有相邻数据点连接后填充区域,只要在你想要断开分段的位置,插入1行**X轴(分类/时间维度)值与上一段末尾点完全一致、Y轴(数值)留空(Null/NA)**的占位数据,工具渲染时会自动在空值位置切断填充路径,自然形成分段断开的效果。
不同工具的具体操作
Excel/WPS 表格
- 对照参考效果图的分段位置,找到每段面积结束的最后一行源数据,在该行下方插入新行
- 新行的X轴列内容和上一行完全相同,Y轴数值列直接留空,不要填0或者其他内容
- 选中整理完成的全量数据,直接插入基础面积图,默认渲染就会在空值位置形成分段间隙
- 最后调整每段的填充色、透明度,删掉多余的网格线、冗余坐标轴标注,匹配参考图样式即可
Python(Matplotlib/Seaborn)
- 读取源数据后,在所有需要分段断开的索引位置插入占位行:X值取前一个点的X值,Y值设为
np.nan - 直接调用面积绘制函数即可,Matplotlib默认遇到空值会自动断开路径,不会跨空值填充
核心参考代码:
import pandas as pd import numpy as np import matplotlib.pyplot as plt # 替换成你自己的列名和断点位置 x_col = "date" y_col = "value" break_indexs = [4, 9, 15] # 倒序插入空值行,避免索引偏移 for idx in sorted(break_indexs, reverse=True): null_row = pd.DataFrame({ x_col: [df.loc[idx, x_col]], y_col: [np.nan] }) df = pd.concat([df.iloc[:idx+1], null_row, df.iloc[idx+1:]]).reset_index(drop=True) plt.figure(figsize=(10, 6)) plt.fill_between(df[x_col], df[y_col], color="#1f77b4", alpha=0.8) plt.show()- 读取源数据后,在所有需要分段断开的索引位置插入占位行:X值取前一个点的X值,Y值设为
Tableau/Power BI
- 数据源预处理阶段和表格操作逻辑一致,在分段位置插入X值重复、度量值为空的占位行
- 拖入对应字段选择面积图标记类型即可,工具默认会识别空值显示间隙,不需要额外配置路径断点
- 如果渲染后发现段与段之间还是连在一起,检查空值设置项,不要选择「空值补零/插值连接」,切换为「保留间隙」选项即可
注意事项
- 断点行的X轴值不要改成和前后点不同的内容,否则会在X轴上多出多余的刻度,和上一段末尾点X值保持一致就能保证X轴刻度连续无冗余
- 如果需要给不同分段设置不同填充色,给每段数据加独立的分组标签列,按标签映射颜色即可
内容的提问来源于stack exchange,提问作者Nimrod
相关产品推荐
相关产品推荐

