瀑布图(Waterfall Chart)是一种用于显示数据的增减变化过程的图表,通过柱状条的堆叠,将数据的变化过程以类似瀑布流水的形式直观地呈现出来,展示了一个初始值在经过一系列的增加或减少的中间运算(如收入的各项增减因素、成本的构成变化等)后如何达到最终值。
1. 瀑布图的构成
瀑布图由一系列矩形柱和连接线组成,通常包含以下几个要素:
- 起始值:显示一个初始的数值,作为分析的起点。
- 增量与减量:中间的柱子表示数值的增加或减少,通过不同颜色区分。
- 增量柱子通常为绿色或上升方向。
- 减量柱子通常为红色或下降方向。
- 中间累计值:增减量之间用连接线表示当前的累计值。
- 最终值:一个特殊的柱子,显示整个过程的结果。
2. 瀑布图的特点
- 动态过程的可视化:清晰地展示了从初始值到最终值的所有变化。
- 增减关系清晰:增量和减量直观分开,便于分析变化的来源。
3. 适用场景
瀑布图常用于以下场景:
- 财务分析:如显示公司收入从毛收入到净利润的各项增减。
- 预算分解:如展示预算从整体分解到各部门的分配。
- 业绩对比:如分析年度销售额的变化,包括增长因素和减少因素。
- 项目分析:如描述项目资源投入与成果输出的变化过程。
4. 瀑布图局限性
瀑布图也有其局限性:
- 数据量限制:若阶段过多,图表可能显得拥挤、不易阅读。
- 不适合复杂变化:当增减交替频繁时,难以清晰传达信息。
- 对比性不足:不适合多个维度的比较。
5. 瀑布图代码实现
5.1 Python 代码
Dash 是一个非常好用的模块!!!
import dash
from dash import html, dcc
import plotly.graph_objects as go
import dash_bootstrap_components as dbc
import numpy as np
def create_advanced_charts():
"""
创建高级图表示例
返回一个包含多个图表的列表
"""
# 3. 瀑布图
waterfall_x = ['初始值', '收入', '支出', '税费', '最终值']
waterfall_y = [0, 100, -30, -20, 0]
waterfall_fig = go.Figure(go.Waterfall(
name="瀑布图",
orientation="v",
measure=["absolute", "relative", "relative", "relative", "total"],
x=waterfall_x,
textposition="outside",
text=["+0", "+100", "-30", "-20", "50"],
y=waterfall_y,
connector={"line": {"color": "rgb(63, 63, 63)"}},
))
waterfall_fig.update_layout(
title='瀑布图示例',
showlegend=True,
template='plotly_white'
)
return(waterfall_fig)
app = dash.Dash(__name__)
app.layout = html.Div([
html.H3("高级图表展示", className="text-center mt-4 mb-3"),
dcc.Graph(figure=create_advanced_charts())
])
if __name__ == "__main__":
app.run_server(debug=True, port=8051)
5.2 瀑布图效果(网页展示)