首页 > 分享 > 数据可视化工具总结:直方图、密度图、箱线图与小提琴图

数据可视化工具总结:直方图、密度图、箱线图与小提琴图

1 直方图

       直方图(Histogram)又称柱状图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。通过绘制直方图可以较为直观地传递有关数据的变化信息,使数据使用者能够较好地观察数据波动的状态,使数据决策者能够依据分析结果确定在什么地方需要集中力量改进工作。

特点:用矩形条的高度表示数据落入某区间的频数或频率,分箱数影响分布形态的呈现,直观但非连续,适合展示数据的粗略分布结构。
应用场景:快速查看数据的分布形状,如是否对称、是否存在多峰;对比不同组数据的分布差异。

import matplotlib.pyplot as plt

import seaborn as sns

import numpy as np

data = np.random.normal(loc=0, scale=1, size=1000)

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(10, 6))

sns.histplot(data=data, bins=30, kde=False, color='#1f77b4', edgecolor='white')

plt.title('正态分布直方图', fontsize=14, pad=20)

plt.xlabel('数值', fontsize=12)

plt.ylabel('频率', fontsize=12)

plt.grid(axis='y', linestyle='--', alpha=0.7)

plt.show()

结果:生成蓝色直方图,横轴为数值区间,纵轴为频数。柱子高度反映各区间数据量,正态分布数据集中在均值0附近,两侧对称。

2. 密度图

       密度图(Density Plot)是一种基于核密度估计(KDE)的可视化工具,用于展示连续变量的概率密度分布。它通过平滑的曲线表示数据的分布情况,横轴表示数据值,纵轴表示概率密度。密度图能够清晰地展示数据的分布形态,如对称性、偏态、多峰性等,帮助用户更好地理解数据的集中趋势和离散程度。密度图常用于比较多个数据集的分布情况,特别是在需要展示数据的细微变化时。

特点:通过核密度估计(KDE)生成连续平滑曲线,反映概率密度,曲线下面积为1,便于对比不同数据集的分布形态,可能因带宽选择过度平滑或欠平滑。
应用场景:展示连续变量的概率密度分布,对比多个分布的形状。

import matplotlib.pyplot as plt

import seaborn as sns

import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

data1 = np.random.normal(-1, 0.8, 300)

data2 = np.random.normal(2, 1.2, 700)

data = np.concatenate([data1, data2])

plt.figure(figsize=(10,6))

sns.kdeplot(data, color='purple', label='默认带宽', fill=True)

sns.kdeplot(data, bw_adjust=0.3, color='orange', label='宽带=0.3', fill=True, alpha=0.3)

plt.title('核密度估计图:带宽调整对比')

plt.legend()

plt.show()

结果:橙色填充的密度曲线显示双峰分布,左峰(均值-1)较陡峭,右峰(均值2)较宽,反映混合分布特征。

3. 箱线图

        箱线图(Box Plot)是一种基于五数概括(最小值、第一四分位数、中位数、第三四分位数、最大值)的统计图表,用于展示数据的分布情况。箱线图通过箱体和须线直观地表示数据的集中趋势、离散程度和异常值。箱体的上下边界分别表示第一四分位数和第三四分位数,中间的线表示中位数,须线延伸到数据的最小值和最大值(或1.5倍四分位距之外的异常值)。箱线图特别适合比较多个组的数据分布,能够快速识别数据中的异常值和分布的偏态。

特点:基于五数概括(最小值、Q1、中位数、Q3、最大值)展示数据分布,可检测异常值,不展示数据的具体分布形状。
应用场景:比较多个组的中位数和离散程度,快速识别数据中的异常值。

import matplotlib.pyplot as plt

import seaborn as sns

import numpy as np

np.random.seed(42)

data1 = np.random.normal(0, 1, 100)

data2 = np.random.lognormal(0, 0.4, 100)

data3 = np.random.beta(2, 5, 100)

data4 = np.random.uniform(-2, 3, 100)

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(12,6))

sns.boxplot(

data=[data1, data2, data3, data4],

palette=['lightyellow', 'lightblue', 'lightgreen', 'violet'],

whis=1.5,

showmeans=True,

meanprops={'marker': 'o', 'markerfacecolor': 'red', 'markeredgecolor': 'red'}

)

plt.xticks([0,1,2,3], ['正态分布', '对数正态分布', 'Beta分布', '均匀分布'])

plt.title('箱线图:不同分布对比(带均值标记)', fontsize=14)

plt.grid(axis='y', alpha=0.4)

plt.show()

结果:
正态分布:数据对称分布,集中在均值附近,具有较小的离散程度。
对数正态分布:数据右偏,集中在中间偏右的位置,具有较长的右尾。
Beta分布:数据集中在中间区域,分布较为集中,没有明显的异常值。
均匀分布:数据均匀分布在指定区间内,没有明显的集中趋势或异常值。

4. 小提琴图

       小提琴图(Violin Plot)是一种结合了箱线图和密度图的可视化工具,用于展示数据的分布情况。它通过宽度变化表示数据的密度,同时内部嵌套箱线图或四分位线,展示数据的集中趋势和离散程度。小提琴图的形状反映了数据的分布密度,宽度越大表示该区域的数据点越多。小提琴图特别适合同时了解数据的分布形状和统计量,特别是在需要展示多峰分布或对比多个复杂分布的细节差异时。

特点:结合箱线图和密度图的优点,展示分布的对称性和密度,宽度表示数据密度,内部可能嵌套箱线图或四分位线。
应用场景:需要同时了解分布形状和统计量,如多峰分布;对比多个复杂分布的细节差异。

import matplotlib.pyplot as plt

import seaborn as sns

import numpy as np

import pandas as pd

np.random.seed(42)

data_a = np.random.normal(loc=0, scale=1, size=200) # 正态分布

data_b = np.random.gamma(shape=2, scale=1, size=200) # 伽马分布

df = pd.DataFrame({

'数值': np.concatenate([data_a, data_b]),

'组别': ['组A'] * 200 + ['组B'] * 200

})

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(10, 6))

sns.violinplot(

data=df,

x='组别',

y='数值',

palette='pastel',

inner='box',

split=False,

bw=0.2

)

plt.title('小提琴图(含箱线图)', fontsize=14, pad=20)

plt.xlabel('组别', fontsize=12)

plt.ylabel('数值', fontsize=12)

plt.show()

结果:
组A(蓝色小提琴图)
分布形状:大致对称,呈现近似正态分布的形状。
集中趋势:数据集中在0附近,中位数接近0。
离散程度:数据范围从大约-2.5到2.5,显示一定的离散程度。
箱线图细节: 箱体覆盖了大约-1到1的范围,表示中间50%的数据。须线延伸到大约-2.5和2.5,显示数据的最小值和最大值。没有明显的异常值。

组B(橙色小提琴图)
分布形状:右偏(正偏),呈现单峰分布,右侧有一个明显的长尾。
集中趋势:数据集中在1到3之间,中位数接近2。
离散程度:数据范围从大约0到6,显示较大的离散程度。
箱线图细节: 箱体覆盖了大约1到3的范围,表示中间50%的数据。须线延伸到大约0和6,显示数据的最小值和最大值。没有明显的异常值。

对比分析
分布形状:组A的数据对称分布,接近正态分布;组B的数据右偏,呈现长尾分布。
集中趋势:组A的数据集中在0附近,组B的数据集中在1到3之间。
离散程度:组A的数据离散程度较小,组B的数据离散程度较大。
数据范围:组A的数据范围较窄,组B的数据范围较宽。

总结:

对比分析
直方图 vs 密度图: 直方图适合快速查看分布的粗略结构,而密度图更适合展示连续变量的平滑分布。
箱线图 vs 小提琴图: 箱线图适合比较多个组的中位数和离散程度,而小提琴图更适合展示分布形状和细节。

直方图、密度图、箱线图和小提琴图各有特点,适合不同的数据可视化需求。选择合适的工具可以更直观地分析数据分布、集中趋势和离散程度,帮助决策者快速理解数据特征并制定策略。

相关知识

数据可视化工具总结:直方图、密度图、箱线图与小提琴图
第六篇:R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)
matplotlib练习:散点图、折线图、直方图、饼图、箱线图
【机器学习3】鸢尾花数据集可视化,让枯燥的数据颜值爆表!
鸢尾花数据集如何可视化
Python中可视化数据(直方图和密度图)
Seaborn数据可视化案例精讲(20年经验总结):从入门到项目落地全路径
7.4 数据可视化实战案例
数据可视化——用Excel巧妙绘制图表及在论文中的排版技巧
Python数据可视化:箱线图多种库画法

网址: 数据可视化工具总结:直方图、密度图、箱线图与小提琴图 https://m.huajiangbk.com/newsview2500346.html

所属分类:花卉
上一篇: 十大Python可视化工具,太强
下一篇: 大数据可视化工具(Lightni