pythonmatplotlib绘图小提琴_python 箱线图和小提琴图

本文介绍了Python使用matplotlib库绘制箱线图和小提琴图的方法。箱线图展示了数据的最大值、最小值、中位数和四分位数,用于数据分散情况的统计分析;小提琴图则结合了箱线图和密度图的特性,用于显示多组数据的分布状态和概率密度。文章通过实例代码详细解释了如何自定义颜色和样式,并展示了绘制过程。
摘要由CSDN通过智能技术生成

箱形图(Box-plot)

又称为盒须图、盒式图或箱线图

是一种用作显示一组数据分散情况资料的统计图,因形状如箱子而得名。它能显示出一组数据的最大值、最小值、中位数、及上下四分位数。

箱形图绘制须使用常用的统计量,能提供有关数据位置和分散情况的关键信息,尤其在比较不同的母体数据时更可表现其差异。

箱形图的绘制主要包含六个数据节点,需要先将数据从大到小进行排列,然后分别计算出它的上边缘,上四分位数,中位数,下四分位数,下边缘,还有一个异常值。

计算过程:

计算上四分位数(Q3),中位数,下四分位数(Q1)

计算上四分位数和下四分位数之间的差值,即四分位数差(IQR, interquartile range)Q3-Q1

绘制箱线图的上下范围,上限为上四分位数,下限为下四分位数。在箱子内部中位数的位置绘制横线。

大于上四分位数1.5倍四分位数差的值,或者小于下四分位数1.5倍四分位数差的值,划为异常值(outliers)。

异常值之外,最靠近上边缘和下边缘的两个值处,画横线,作为箱线图的触须。

极端异常值,即超出四分位数差3倍距离的异常值,用实心点表示;较为温和的异常值,即处于1.5倍-3倍四分位数差之间的异常值,用空心点表示。

为箱线图添加名称,数轴等.

最简盒型图

import matplotlib.pyplot as plt

import numpy as np

all_data = [np.random.normal(0, std, 100) for std in range(1, 4)]

fig = plt.figure(figsize=(8, 6))

plt.boxplot(all_data,

notch=False, # box instead of notch shape

sym='rs', # red squares for outliers

vert=True) # vertical box aligmnent

plt.xticks([y + 1 for y in range(len(all_data))], ['x1', 'x2', 'x3'])

plt.xlabel('measurement x')

t = plt.title('Box plot')

plt.show()

自定义颜色填充盒形图

import matplotlib.pyplot as plt

import numpy as np

all_data = [np.random.normal(0, std, 100) for std in range(1, 4)]

fig = plt.figure(figsize=(8, 6))

bplot = plt.boxplot(all_data,

notch=False, # notch shape

vert=True, # vertical box aligmnent

patch_artist=True) # fill with color

colors = ['pink', 'lightblue', 'lightgreen']

for patch, color in zip(bplot['boxes'], colors):

patch.set_facecolor(color)

plt.xticks([y + 1 for y in range(len(all_data))], ['x1', 'x2', 'x3'])

plt.xlabel('measurement x')

t = plt.title('Box plot')

plt.show()

小提琴图

小提琴图 (Violin Plot)是用来展示多组数据的分布状态以及概率密度。这种图表结合了箱形图和密度图的特征,主要用来显示数据的分布形状。跟箱形图类似,但是在密度层面展示更好。在数据量非常大不方便一个一个展示的时候小提琴图特别适用。

小提琴图概念图

990898bee9c5

1503464-20190813102438161-852073569.png

import matplotlib.pyplot as plt

import numpy as np

fig, axes = plt.subplots(figsize=(12, 5))

all_data = [np.random.normal(0, std, 100) for std in range(6, 10)]

axes.violinplot(all_data,

showmeans=False,

showmedians=True

)

axes.set_title('violin plot')

# adding horizontal grid lines

axes.yaxis.grid(True)

axes.set_xticks([y + 1 for y in range(len(all_data))], )

axes.set_xlabel('xlabel')

axes.set_ylabel('ylabel')

plt.setp(axes, xticks=[y + 1 for y in range(len(all_data))],

xticklabels=['x1', 'x2', 'x3', 'x4'],

)

plt.show()

好的,关于使用Python的Seaborn库绘制小提琴,有一些需要注意的地方。 首先,要确保已经安装了Seaborn库。可以使用以下命令安装: ``` pip install seaborn ``` 其次,需要导入Seaborn库和Matplotlib库: ```python import seaborn as sns import matplotlib.pyplot as plt ``` 接下来,我们需要准备数据小提琴通常用于显示数值型变量的分布情况,最常见的是显示不同类别或组之间的比较。因此,我们需要将数据按照类别或组分组。 例如,我们有一个数据集,其中包含了不同城市的温度数据。我们可以按照城市将数据分组,并将每个城市的温度数据存储在一个列表中。 ```python data = { 'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix'], 'Temperature': [ [68, 73, 77, 80, 83, 87, 88, 88, 85, 80, 74, 68], [55, 60, 62, 64, 68, 72, 75, 76, 74, 70, 62, 55], [28, 32, 40, 52, 63, 72, 77, 75, 68, 56, 42, 30], [49, 53, 60, 69, 77, 83, 87, 87, 81, 71, 60, 50], [65, 68, 74, 81, 89, 97, 100, 99, 93, 83, 72, 63] ] } ``` 接下来,我们可以使用Seaborn库的violinplot函数来绘制小提琴: ```python sns.violinplot(x='City', y='Temperature', data=data) plt.show() ``` 这将会生成一个小提琴,其中x轴表示城市名称,y轴表示温度值。 然而,有时候我们可能会遇到一些小坑。比如,当我们使用Seaborn库的violinplot函数绘制小提琴时,如果数据集中有缺失值,会导致程序崩溃。因此,我们需要在绘图之前先处理好数据,确保不存在缺失值。 此外,如果数据集中存在异常值,也可能会导致小提琴绘制不准确。因此,在绘制小提琴之前,我们需要对数据进行合理的处理和清洗。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值