Analytics visualization
Skill morning-start/agent-skills/process/data-analytics/analytics-visualization
AI 编程助手的专业技能库,涵盖 30+ 技能,按 6 类组织
npx -y skills add morning-start/agent-skills --skill analytics-visualizationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when the user needs multi-dimensional data visualization, chart selection guidance, or interactive presentation patterns.
SKILL.md
9.7 KB, as published. Nobody here has run it
Analytics Visualization
任务目标
- 本 Skill 用于:掌握复杂数据的多维度可视化呈现
- 能力包含:多维度变量展示、图表选型、交互设计、可视化原则
- 触发条件:需要展示多维度数据、呈现分析结果时
适用场景
- 需要把多维数据压缩成容易理解的图表
- 需要在趋势、对比、分布、关系和路径之间选图
- 需要做交互式图表或分析仪表盘
核心原则
可视化黄金法则
1. 明确可视化目标(比较、趋势、分布、关系、占比)
2. 选择适合数据类型的图表
3. 减少视觉干扰,突出关键信息
4. 引导读者关注重点
5. 提供足够的上下文帮助理解
图表选择决策树
数据维度数量
│
├── 1维(单一变量)→ 折线图、柱状图
│
├── 2维(两个变量)→ 散点图、气泡图
│
├── 3维(三个变量)→ 3D散点图、热力图
│
└── 多维(4+变量)→ 雷达图、平行坐标、桑基图
↓
考虑降维或分面展示
多维度变量展示方案
1. 气泡图(适合3-4个维度)
维度映射:
- X轴:第一个变量
- Y轴:第二个变量
- 气泡大小:第三个变量
- 气泡颜色:第四个变量
示例:
import plotly.express as px
df = px.data.iris()
fig = px.scatter(
df,
x="sepal_width",
y="sepal_length",
size="petal_length", # 第四维:点大小
color="species", # 第五维:颜色区分
hover_name="species"
)
fig.show()
适用场景:用户/产品/业务的多维度对比分析
2. 热力图(适合展示矩阵关系)
核心原理:通过颜色深浅表达数值大小
示例 - 指标与时间维度交叉:
import plotly.graph_objects as go
import pandas as pd
import numpy as np
data = np.random.rand(10, 12) # 10个指标 x 12个月
labels_x = [f"2024-{str(i).zfill(2)}" for i in range(1, 13)]
labels_y = [f"指标{i}" for i in range(1, 11)]
fig = go.Figure(data=go.Heatmap(
z=data,
x=labels_x,
y=labels_y,
colorscale='RdYlGn',
hovertemplate='指标: %{y}<br>时间: %{x}<br>值: %{z:.2f}<extra></extra>'
))
fig.show()
适用场景:指标波动监控、相关性分析、用户行为矩阵
3. 雷达图(适合对比多个维度)
核心原理:将多维度展开到同心圆轴线上
示例 - 用户画像多维度对比:
import plotly.graph_objects as go
categories = ['活跃度', '购买力', '忠诚度', '传播力', '满意度', '复购率']
fig = go.Figure()
fig.add_trace(go.Scatterpolar(
r=[85, 72, 90, 65, 88, 78],
theta=categories,
fill='toself',
name='高价值用户',
line_color='red'
))
fig.add_trace(go.Scatterpolar(
r=[45, 55, 60, 40, 65, 50],
theta=categories,
fill='toself',
name='普通用户',
line_color='blue'
))
fig.update_layout(
polar=dict(radialaxis=dict(visible=True, range=[0, 100])),
showlegend=True,
title="用户画像多维度对比"
)
fig.show()
适用场景:用户分群、产品属性对比、能力评估
4. 平行坐标图(适合5+维度)
核心原理:每个维度一条垂直轴,数据点用线连接
示例:
import plotly.express as px
df = px.data.iris()
fig = px.parallel_coordinates(
df,
color="species",
dimensions=['sepal_length', 'sepal_width', 'petal_length', 'petal_width'],
color_continuous_scale=px.colors.diverging.Tealrose
)
fig.show()
适用场景:多指标监控、高维数据探索、聚类结果展示
5. 旭日图(适合层级结构+占比)
核心原理:环形图的多层扩展
示例 - 业务营收层级分解:
import plotly.express as px
import pandas as pd
df = pd.DataFrame({
'labels': ['总营收', '产品A', '产品B', '产品A-区域1', '产品A-区域2', '产品B-区域1', '产品B-区域2'],
'parents': ['', '总营收', '总营收', '产品A', '产品A', '产品B', '产品B'],
'values': [100, 60, 40, 35, 25, 22, 18]
})
fig = px.sunburst(df, names='labels', parents='parents', values='values')
fig.show()
适用场景:营收分解、组织架构、业务结构分析
6. 桑基图(适合流量/转化分析)
核心原理:展示流量从源头到终点的分配
示例 - 用户转化路径:
import plotly.graph_objects as go
fig = go.Figure(data=[go.Sankey(
node=dict(
pad=15,
thickness=20,
line=dict(color="black", width=0.5),
label=["访问", "注册", "下单", "支付", "复购"],
color=["blue", "green", "orange", "red", "purple"]
),
link=dict(
source=[0, 1, 2, 1, 3, 2],
target=[1, 2, 3, 4, 4, 4],
value=[1000, 400, 300, 100, 200, 150]
)
)])
fig.show()
适用场景:转化漏斗、流量分析、路径追踪
7. 分面图(适合分组对比)
核心原理:将数据分组,在多个子图中并排展示
示例 - 按类别分组的时间序列:
import plotly.express as px
df = px.data.tips()
fig = px.line(
df,
x="size",
y="total_bill",
color="sex",
facet_col="smoker",
facet_row="time",
title="各维度组合下的消费对比"
)
fig.show()
适用场景:多维度交叉分析、分组对比
8. 组合图表(适合混合数据类型)
核心原理:在一个图表区叠加多种图表类型
示例 - 趋势+目标线+异常标记:
import plotly.graph_objects as go
import pandas as pd
dates = pd.date_range('2024-01-01', periods=30)
values = [100 + i*2 + (i%7)*5 + (i**1.1) + 50*((i%5)/5) for i in range(30)]
fig = go.Figure()
fig.add_trace(go.Scatter(
x=dates,
y=values,
mode='lines+markers',
name='实际值',
line=dict(color='blue')
))
fig.add_trace(go.Scatter(
x=dates,
y=[120]*30,
mode='lines',
name='目标线',
line=dict(color='green', dash='dash')
))
fig.add_trace(go.Scatter(
x=dates[values.index(max(values))],
y=[max(values)],
mode='markers+text',
marker=dict(color='red', size=15),
text=['峰值'],
name='异常点'
))
fig.update_layout(
title="30天趋势监控(多元素组合)",
xaxis_title="日期",
yaxis_title="数值"
)
fig.show()
适用场景:KPI监控、趋势分析、异常检测
进阶可视化技术
地理可视化(基于位置的多维度)
散点地图 + 颜色/大小编码:
import plotly.express as px
df = px.data.gapminder().query("year == 2007")
fig = px.scatter_geo(
df,
locations="iso_alpha",
size="pop",
color="lifeExp",
hover_name="country",
projection="natural earth",
title="全球预期寿命分布"
)
fig.show()
箱线图 + 小提琴图(分布多维度)
组合展示:
import plotly.express as px
df = px.data.tips()
fig = px.violin(
df,
y="total_bill",
x="day",
color="sex",
box=True,
points="all",
hover_data=df.columns
)
fig.show()
3D散点图(真正三维展示)
import plotly.express as px
df = px.data.iris()
fig = px.scatter_3d(
df,
x='sepal_length',
y='sepal_width',
z='petal_length',
color='species',
size='petal_width',
title="鸢尾花数据集 3D 可视化"
)
fig.show()
配色与主题
配色原则
| 场景 | 推荐色板 | 说明 |
|---|---|---|
| 数值递增 | RdYlGn(红-黄-绿) | 直观表达大小 |
| 数值递减 | YlOrRd(黄-橙-红) | 警示类常用 |
| 分类对比 | 类别色板 | 区分不同类别 |
| 正负对比 | 蓝色-红色 | 正面-负面 |
| 统一主题 | 单色渐变 | 强调一致性 |
交互最佳实践
fig.update_layout(
hovermode="x unified", # 统一悬停
hoverlabel=dict(
bgcolor="white",
font_size=12
),
dragmode="pan" # 拖拽平移
)
fig.show(config={"scrollZoom": True})
图表选型速查表
| 分析目的 | 推荐图表 |
|---|---|
| 趋势分析 | 折线图、面积图 |
| 比较大小 | 柱状图、条形图 |
| 占比分布 | 饼图、环形图、旭日图 |
| 相关关系 | 散点图、热力图 |
| 分布形态 | 直方图、箱线图、小提琴图 |
| 转化路径 | 桑基图、漏斗图 |
| 地理分布 | 地图、散点地图 |
| 多维对比 | 雷达图、平行坐标、气泡图 |
| 分组对比 | 分面图、组合图 |
常见问题处理
维度过多怎么办?
- 降维:使用PCA或因子分析
- 分面:按某维度拆分多个子图
- 交互:提供筛选器动态切换
- 聚合:高维转低维聚合指标
数据量过大怎么办?
- 采样:随机抽样或分箱
- 聚合:预聚合后展示
- 渐进加载:先概览后细节
- 数据窗口:时间窗口切片
颜色使用误区
- 不使用红绿色(色盲不友好)
- 不使用过多颜色(≤7种)
- 颜色要有语义一致性
- 深浅表达数值大小
资源索引
- Plotly 图表库:https://plotly.com/python/
- ECharts 示例库:https://echarts.apache.org/examples/
- 颜色工具:https://colorbrewer2.org/
注意事项
- 可视化是手段,不是目的,让数据说话才是目的
- 多维度展示要考虑受众的理解能力
- 交互要适度,避免过度复杂
- 静态图表优先考虑打印/分享场景