分布类相关的可视化图像

目录

1. 直方图(Histogram)

特点

应用场景

Python实现

结果

2. 密度图(Density Plot)

特点

应用场景

Python实现

结果

3. 箱线图(Box Plot)

特点

应用场景

Python实现

结果

4. 小提琴图(Violin Plot)

特点

应用场景

Python实现

结果

5.蜂巢图(Bee Swarm Plot)

特点

应用场景

Python实现

结果

6.总结


1. 直方图(Histogram)


特点

  • 显示数据分布:通过将数据分桶(binning),展示数据在不同区间内的频数或频率。

  • 直观易懂:能够快速看出数据的集中趋势、离散程度和偏态。

  • 可调整参数:可以通过改变bin的数量或宽度来调整直方图的细节程度。


应用场景

  • 数据探索:初步了解数据的分布情况,判断数据是否符合某种分布(如正态分布)。

  • 质量控制:分析产品质量数据,查看是否符合标准范围。

  • 市场调研:统计用户年龄、收入等分布情况。


Python实现

import matplotlib.pyplot as plt
import numpy as np
data = np.random.randn(1000)
plt.hist(data, bins=30, edgecolor='black', alpha=0.7)
plt.title('Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.show()

结果

生成一个直方图,横轴表示数据值的区间,纵轴表示每个区间内的频数,通过直方图可以直观地看到数据集中在中间区域,符合正态分布的特征。

2. 密度图(Density Plot)


特点

  • 平滑的分布曲线:通过核密度估计(KDE)将数据的分布平滑化,展示数据的概率密度函数。

  • 更灵活:相比于直方图,密度图不受bin数量的影响,能够更平滑地展示数据分布。

  • 可叠加:可以将多个数据集的密度图叠加在一起,便于比较不同数据集的分布差异。


应用场景

  • 多组数据比较:比较不同组数据的分布形状,判断它们是否来自同一分布。

  • 金融数据分析:分析资产收益率的分布,判断其风险特征。

  • 生物医学:分析基因表达数据的分布。


Python实现

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 2
sns.kdeplot(data1, label='Group 1', fill=True)
sns.kdeplot(data2, label='Group 2', fill=True)

plt.title('Density Plot')
plt.xlabel('Value')
plt.ylabel('Density')
plt.legend()
plt.show()

结果

生成两个数据集的密度图,通过曲线的形状可以直观地看出两个数据集的分布差异,例如Group 1的分布更接近标准正态分布,而Group 2整体偏移了2个单位。

3. 箱线图(Box Plot)

特点

  • 五数概括:通过展示数据的最小值、第一四分位数(Q1)、中位数(Q2)、第三四分位数(Q3)和最大值,提供数据的统计概览。

  • 异常值检测:能够直观地识别出数据中的异常值(通常定义为超出1.5倍四分位距范围的点)。

  • 简洁明了:用较少的图形元素展示较多的统计信息。

应用场景

  • 数据质量分析:快速识别数据中的异常值和数据的集中趋势。

  • 多组数据比较:比较不同组数据的分布范围和离散程度。

  • 教育评估:分析学生成绩分布,判断成绩的集中趋势和离散程度。

Python实现

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
np.random.seed(42)
data_group1 = np.random.normal(0, 1, 100)
data_group2 = np.random.normal(2, 1.5, 100)
data_group3 = np.random.normal(-1, 0.8, 100)
all_data = [data_group1, data_group2, data_group3]
labels = ['Group 1', 'Group 2', 'Group 3']
plt.figure(figsize=(8, 5))
plt.boxplot(all_data, labels=labels, patch_artist=True)
plt.title("Basic Box Plot (Matplotlib)")
plt.ylabel("Value")
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.show()
plt.figure(figsize=(8, 5))
sns.boxplot(data=all_data)  # 或使用DataFrame长格式数据
plt.xticks(ticks=[0, 1, 2], labels=labels)
plt.title("Basic Box Plot (Seaborn)")
plt.ylabel("Value")
plt.show()

结果

生成一个箱线图,横轴为分组标签,箱体显示Q1-Q3,中线为中位数,须线延伸至非异常值范围,异常值以圆圈标记。

4. 小提琴图(Violin Plot)

特点

  • 结合箱线图和密度图:在箱线图的基础上,两侧添加了密度图的形状,展示了数据的分布密度。

  • 更丰富的信息:不仅能够展示数据的统计特征,还能通过密度形状直观地看出数据的分布形态。

  • 美观且信息量大:在有限的空间内展示更多的信息,适合用于展示复杂数据集的分布。

应用场景

  • 多组数据比较:比较不同组数据的分布形态和统计特征。

  • 生物医学研究:分析不同实验组的基因表达数据分布。

  • 社会科学研究:比较不同人群的收入分布等。

Python实现

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 2
sns.violinplot(data=[data1, data2])
plt.title('Violin Plot')
plt.xticks([0, 1], ['Group 1', 'Group 2'])
plt.ylabel('Value')
plt.show()

结果

生成一个小提琴图,中间的白色点表示中位数,箱子部分表示数据的中间50%范围,两侧的形状表示数据的密度分布。通过小提琴图可以直观地看出两个数据集的分布差异,例如Group 1的分布更集中,而Group 2的分布更分散且整体偏移了2个单位。

5.蜂巢图(Bee Swarm Plot)

特点

  • 避免重叠:通过调整数据点的位置,避免了传统散点图中数据点重叠的问题,使得每个数据点都能清晰显示。

  • 直观展示分布:能够直观地展示数据的分布情况,包括数据的集中区域、离散程度和异常值。

  • 结合统计信息:可以与箱线图结合使用,同时展示数据的统计特征(如中位数、四分位数)和每个数据点的具体位置。

应用场景

  • 生物医学研究:展示实验数据的分布情况,例如基因表达水平、药物反应强度等。

  • 市场调研:分析用户评分、产品价格等数据的分布,判断数据的集中趋势和离散程度。

  • 教育评估:展示学生成绩分布,分析成绩的集中区域和异常值。

Python实现

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
data = np.random.randn(1000)
sns.stripplot(data=data, jitter=True, size=3, color="blue", edgecolor="gray")
plt.title('Bee Swarm Plot')
plt.xlabel('Group')
plt.ylabel('Value')
plt.show()

结果

运行上述代码后,会生成一个蜂巢图:

  • 横轴:表示数据所属的组别(在本例中只有一个组)。

  • 纵轴:表示数据的值。

  • 数据点:以“蜂巢”状排列,避免了重叠,使得每个数据点都能清晰显示。

  • 分布情况:通过数据点的分布,可以直观地看出数据集中在中间区域,符合正态分布的特征。

6.总结

  • 直方图适合初步探索数据分布,直观展示数据的频数分布。

  • 密度图适合展示平滑的分布曲线,便于比较多个数据集的分布差异。

  • 箱线图适合快速展示数据的统计特征和异常值。

  • 小提琴图结合了箱线图和密度图的优点,适合展示复杂数据集的分布形态和统计特征。

  • 蜂巢图通过抖动数据点避免重叠,能够直观地展示数据的分布情况,尤其适用于展示离散数据的分布。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值