Python matplotlib 绘制提琴图 复习回顾 1

这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战

复习回顾

matplotlib 是Python专门提供绘制功能的库,我们前面也学习pyplot提供绘制折线、散点、柱状、直方、饼图等常见的图像外,还提供animation类绘制动态图。同时对特殊的图表如应用在物理学上的量场图、关注数据分布情况的箱型图等。以上所述的往期文章例举如下。

继上次我们学习能快速展示一组数据的中位数、上下四分位数、最大小值的箱型图pyplot.boxplot()方法。同样表示数据分布情况的还有一个图形提琴图。

提琴图.png

本期,我们学习matplotlib.pyplot.violinplot绘制提琴图相关属性学习,Let’s go~

  1. 提琴图概述

  • 什么是提琴图?

+ 提琴图是外形类似提琴,具有箱型图和密度图的特征
+ 提琴图是用来显示数据分布和出现概率的密度
+ 提琴图同展示一组数据的中位数、四分位数范围、密度、95%置信区间![image.png](https://gitee.com/songjianzaina/juejin_p6/raw/master/img/22335788499aa4eecfca1a586cc9e44f85d5a4c37f2c10307a7d8513824d7f9c)
  • 提琴图应用场景

+ 提琴图可以用于比较不同样本之间的密度分布情况
+ 提琴图可用于显示数据完整的分布情况
+ 提琴图常用于在制作精确图表前对离散数据整理
+ 提琴图通常用于基因样本分布、人口年龄分布等等
  • 获取提琴图方法

1
2
python复制代码import matplotlib.pyplot as plt 
plt.violinplot(dataset)
  1. 提琴图属性

  • 设置提琴图位置

+ 关键字:vert
+ 默认值为:True
+ 当vert为True时则创建垂直提琴图
+ 当vert为False时则创建水平提琴图
  • 设置提琴宽度

+ 关键字:width
+ 默认值为:0.5
  • 设置提琴数据

+ 设置显示均值关键字:showmeans,默认为False
+ 设置显示极值关键字:showextrema,默认为True
+ 设置显示中值关键字:showmedians,默认为False
  • 设置提琴样式

+ 需要使用pyplot.violinplot()返回字段“bodies”
+ 结合for循环遍历pyplot.violinplot()["bodies"]
+ 调用set\_facecolor设置提琴颜色
+ 调用set\_edgecolor设置提琴边框颜色
+ 调用set\_alpha设置提琴图透明度
+ 调用set\_linestyle设置提琴边框样式
  1. 绘制提琴图步骤

  • 导入matplotlib.pyplot类
1
python复制代码import matplotlib.pyplot as plt
  • 使用numpy库里的normal(),random(),randint()等方法准备data数组向量序列
1
python复制代码data = [np.random.normal(0,2,100)]
  • 调用pyplot.violinplot(data)方法绘制提琴
1
python复制代码part = plt.violinplot(data,showmedians=True)
  • 调用pyplot.show()方法渲染显示提琴图表
1
python复制代码plt.show()

image.png

  • 通过使用yplot.violinplot()方法返回值,设置提琴图的颜色、边框样式等
1
2
3
4
5
6
python复制代码for pc in part["bodies"]:
print(pc)
pc.set_facecolor("pink")
pc.set_edgecolor("black")
pc.set_alpha(1)
pc.set_linestyle("--")

image.png

  1. 小试牛刀

我们学习以matplotlib提供的绘制提琴图violinplot()方法后,我们来实操一下与scatter结合

  • 调用pyplot.grid()方法为画布添加网格
  • 调用numpy.percentile()计算下四分为数,均值数,上四分为数
  • 调用pyplot.scatter()在提琴图上标记均值的符号
  • 调用pyplot.vline()在提琴图上标记四分位数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
scss复制代码data = [np.random.normal(0,i,100) for i in range(2,6)]
plt.grid()
part = plt.violinplot(data,showmedians=True,widths=[0.3,0.4,0.5,0.6])
for pc in part["bodies"]:
print(pc)
pc.set_facecolor("orange")
pc.set_edgecolor("black")
pc.set_alpha(1)
pc.set_linestyle("--")

q1,me,q3 = np.percentile(data,[25,50,75],axis=1)
ind = np.arange(1,len(me)+1)

plt.scatter(ind,me,marker="o",color="r",s=50,zorder=3)
plt.vlines(ind,q1,q3,color="k",linestyles="-",lw=5)

image.png

总结

本期,我们对matplotlib.pyplot.violinplot()方法绘制提琴图相关属性。提琴图结合箱型图和密度图的特点,不仅展示数据的分布情况,还对数据的密度情况也展示出来。

以上是本期内容,欢迎大佬们点赞评论,下期见~

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%