长沙app定制开发上海网站seo快速排名
瀑布图(Waterfall Chart)是一种特殊的柱状图,用于展示一个数值从初始状态经过一系列正负变化后,最终达到的结果。它通过可视化每个变化的大小和方向,帮助用户清晰地理解数值的增减过程及其累计效果。本节我们学习使用python绘制瀑布图
# 导入必要的库
import numpy as np
import matplotlib.pyplot as pltdef waterfall_chart(values, labels):"""绘制瀑布图的函数。参数:- values: 一个列表,包含每个条目的数值(可以是正数或负数)。- labels: 一个列表,包含每个条目的标签。"""# 计算累计和,用于确定每个柱状图的底部位置cumsum = np.cumsum(values)# 创建一个图形和轴fig, ax = plt.subplots()# 遍历每个值和标签,绘制柱状图for i, (value, label) in enumerate(zip(values, labels)):# 确定柱状图的起始高度# 第一个值的起始高度为0,后续值的起始高度为前一个值的累计和if i == 0:start_height = 0else:start_height = cumsum[i - 1]# 根据值的正负设置颜色:正数为绿色,负数为红色color = 'green' if value >= 0 else 'red'# 绘制柱状图# 使用 ax.bar() 绘制柱状图,通过 bottom 参数设置柱状图的底部位置ax.bar(label, value, bottom=start_height, color=color)# 在柱状图上添加文本标签,显示当前值# 如果值为正数,显示为 "+value";如果为负数,直接显示值if value > 0:ax.text(i, start_height + value / 2, f'+{value}', ha='center', va='center', color='white')else:ax.text(i, start_height + value / 2, f'{value}', ha='center', va='center', color='white')# 添加连线,显示累计值的变化趋势# 使用 ax.plot() 绘制累计和的连线,通过 marker 参数添加标记点ax.plot(labels, cumsum, color='blue', marker='o', linestyle='--', linewidth=2)# 添加网格线,增强可读性ax.grid(axis='y', linestyle='--', alpha=0.7)# 设置标题和坐标轴标签ax.set_title('Waterfall Chart') # 设置标题ax.set_xlabel('Categories') # 设置X轴标签ax.set_ylabel('Cumulative Value') # 设置Y轴标签# 显示图形plt.show()# 示例数据
values = [100, -50, 30, -10, 20] # 每个条目的数值
labels = ['Start', 'Expense 1', 'Income', 'Expense 2', 'Adjustment'] # 每个条目的标签# 调用函数绘制瀑布图
waterfall_chart(values, labels)