在对数据进行比较的时候,我们通常会使用直方图、饼图、折线图来对数据差异进行可视化;如果我们使用箱型图Box Plot,则可以以一种相对稳定的方式描述数据的离散分布情况;
下面是箱型图的直观表示:
对于小提琴图Violin Plot,一般来说,小提琴图是一种绘制连续型数据的方法,在小提琴图中,我们可以获取与箱形图中相同的信息:
- 中位数(小提琴图上的一个白点)
- 四分位数范围(小提琴中心的黑色条)等;
与箱形图相比,小提琴图毫无疑问的优势在于:除了显示上述的统计数据外,它还显示了数据的整体分布;
下面我们用Python绘制一个实例进行对比;
导入相关工具:
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
定义随机观察值的数量,并设置随机种子:
N=10**4
np.random.seed(42)
可视化的函数:
def plot_comparison(x, title):
fig, ax = plt.subplots(3, 1, sharex=True)
# 直方图
sns.distplot(x, ax=ax[0])
ax[0].set_title('Histogram + KDE')
# 箱型图
sns.boxplot(x, ax=ax[1])
ax[1].set_title('Boxplot')
# 小提琴图
sns.violinplot(x, ax=ax[2])
ax[2].set_title('Violin plot')
fig.suptitle(title, fontsize=16)
plt.show()
从标注正态分布采样N个数,绘制结果:
sample_gaussian = np.random.normal(size=N)
plot_comparison(sample_gaussian, 'Standard Normal Distribution')