- 漏斗图通常用于对阶段之间的转化关系进行比较,数据分析中常见的AARRR模型的可视化就是通过漏斗图来实现的。
import plotly.express as px
data = dict(number=[100, 70, 50, 30, 10], stage=["获客", "激活", "留存", "收益", "传播"])
fig = px.funnel(data, x='number', y='stage')
fig.show()
三、趋势类图
折线图
- 折线图通常用于展示随时间(数值)而连续变化的数据,如A公司和B公司在2021年每个月的营业额。
import plotly.express as px
time_data = pd.DataFrame({
'A公司': [20, 30, 40, 50, 45],
'B公司': [18, 25, 33, 45, 58],
'月份': [1, 3, 5, 7, 9]
})
fig = px.line(time_data, x="月份", y=['A公司', 'B公司'], title='公司营收对比')
fig.show()
桑基图
- 桑基图又称桑基能量分流图,也称桑基能量平衡图,该图形从左到右展示出了初始数据流向。该图形的绘制过程较为复杂,在下述代码中有两个主要参数项
node
和link
。
node
用于给出基本的配置项:
pad
:图中空白分隔空隙的大小;thickness
:图中节点的宽度(每个连接处的长方形);line
:每个节点的边框线的颜色和粗细;label
:每个节点的名字(包含一层/二层/三层…);color
:每个节点的颜色(和名字按照索引相对应)
link
用于给出具体的连接选项:
source
:每条连接线的起点(数值表示节点的索引);target
:每条连接线的终点(数值表示节点的索引);value
:连接线的信息量(数值越大,连接线越粗);color
:每条连接线的颜色(通常按照起点的颜色进行对应)。
# 绘制桑基图
import plotly.graph_objects as go
fig = go.Figure(data=[go.Sankey(
node = dict(
pad = 10,
thickness = 20,
line = dict(color = "black", width = 0.5),
label = ["A1", "A2", "B1", "B2", "C1", "C2"],
color = ['blue', 'pink', 'green', 'brown', 'yellow', 'purple']
),
link = dict(
source = [0, 1, 0, 2, 3, 3],
target = [2, 3, 3, 4, 4, 5],
value = [8, 4, 2, 8, 4, 2],
color = ['blue', 'pink', 'blue', 'green', 'brown', 'brown']
))])
fig.update_layout(title_text="桑基图示例", font_size=10)
fig.show()