Plotly.py 中的 Distplot 分布图绘制完全指南
什么是 Distplot?
Distplot 是 Plotly 提供的一种复合统计图表,它能够同时展示数据的多种统计特征。通过组合直方图(Histogram)、核密度估计(Kernel Density Estimation)和地毯图(Rug Plot),Distplot 可以全面呈现数据的分布特征。
为什么使用 Distplot?
- 多维度展示:单一图表中同时展示数据的多种统计特性
- 直观对比:便于比较不同数据集的分布差异
- 灵活配置:可自由组合或隐藏各个组件
- 交互体验:支持悬停查看详细信息等交互功能
基本 Distplot 绘制
import plotly.figure_factory as ff
import numpy as np
# 生成随机数据
np.random.seed(1)
x = np.random.randn(1000)
# 创建基本Distplot
fig = ff.create_distplot([x], ['distplot'])
fig.show()
这段代码会生成包含三个组件的图表:
- 直方图:展示数据分布
- KDE曲线:平滑后的概率密度曲线
- 地毯图:在x轴上显示每个数据点的位置
多数据集对比
# 生成四组不同分布的数据
x1 = np.random.randn(200) - 2
x2 = np.random.randn(200)
x3 = np.random.randn(200) + 2
x4 = np.random.randn(200) + 4
# 创建对比Distplot
fig = ff.create_distplot(
[x1, x2, x3, x4],
['Group 1', 'Group 2', 'Group 3', 'Group 4'],
bin_size=.2
)
fig.show()
自定义配置选项
1. 调整分箱大小
# 为不同数据集设置不同的分箱大小
fig = ff.create_distplot(
hist_data,
group_labels,
bin_size=[.1, .25, .5, 1]
)
2. 自定义颜色和文本
# 设置自定义颜色和悬停文本
colors = ['rgb(0, 0, 100)', 'rgb(0, 200, 200)']
rug_text = [['a','b','c'], ['aa','bb','cc']] # 每个数据点的悬停文本
fig = ff.create_distplot(
[x1, x2],
['2014', '2015'],
colors=colors,
rug_text=rug_text
)
3. 显示/隐藏组件
# 仅显示曲线和地毯图
fig = ff.create_distplot(hist_data, group_labels, show_hist=False)
# 仅显示直方图和地毯图
fig = ff.create_distplot(hist_data, group_labels, show_curve=False)
# 仅显示直方图和曲线
fig = ff.create_distplot(hist_data, group_labels, show_rug=False)
高级应用技巧
1. 使用正态分布曲线
fig = ff.create_distplot(
[x1, x2],
['Group 1', 'Group 2'],
curve_type='normal' # 使用正态分布而非KDE
)
2. 处理Pandas数据框
import pandas as pd
df = pd.DataFrame({
'2012': np.random.randn(200),
'2013': np.random.randn(200)+1
})
fig = ff.create_distplot(
[df[c] for c in df.columns],
df.columns
)
实际应用场景
- 数据探索分析:快速了解数据分布特征
- 模型评估:比较预测值与实际值的分布
- A/B测试:对比不同实验组的结果分布
- 质量控制:监控生产数据的分布变化
最佳实践建议
- 当数据量较大时,适当增大
bin_size
以避免图表过于密集 - 对比多组数据时,使用不同颜色增强可读性
- 考虑目标受众,选择最合适的组件组合
- 添加清晰的标题和图例说明
通过掌握这些技巧,您可以充分利用Plotly的Distplot功能,创建出专业且富有洞察力的数据可视化图表。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考