Hello,大家好,我是程序汪小陈~
今天向大家分享的是如何用Python matplotlib 绘制提琴图表示数据分布情况
首先,我们学习matplotlib.pyplot.violinplot绘制提琴图相关属性学习,Let's go~
1. 提琴图概述
-
什么是提琴图?
- 提琴图是外形类似提琴,具有箱型图和密度图的特征
- 提琴图是用来显示数据分布和出现概率的密度
- 提琴图同展示一组数据的中位数、四分位数范围、密度、95%置信区间
-
提琴图应用场景
- 提琴图可以用于比较不同样本之间的密度分布情况
- 提琴图可用于显示数据完整的分布情况
- 提琴图常用于在制作精确图表前对离散数据整理
- 提琴图通常用于基因样本分布、人口年龄分布等等
-
获取提琴图方法
import matplotlib.pyplot as plt
plt.violinplot(dataset)
2. 提琴图属性
-
设置提琴图位置
- 关键字: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设置提琴边框样式
3. 绘制提琴图步骤
- 导入matplotlib.pyplot类
import matplotlib.pyplot as plt
- 使用numpy库里的normal(),random(),randint()等方法准备data数组向量序列
data = [np.random.normal(0,2,100)]
- 调用pyplot.violinplot(data)方法绘制提琴
part = plt.violinplot(data,showmedians=True)
- 调用pyplot.show()方法渲染显示提琴图表
plt.show()
- 通过使用yplot.violinplot()方法返回值,设置提琴图的颜色、边框样式等
for pc in part["bodies"]:
print(pc)
pc.set_facecolor("pink")
pc.set_edgecolor("black")
pc.set_alpha(1)
pc.set_linestyle("--")
4. 小试牛刀
我们学习以matplotlib提供的绘制提琴图violinplot()方法后,我们来实操一下与scatter结合
- 调用pyplot.grid()方法为画布添加网格
- 调用numpy.percentile()计算下四分为数,均值数,上四分为数
- 调用pyplot.scatter()在提琴图上标记均值的符号
- 调用pyplot.vline()在提琴图上标记四分位数
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)
总结
本期,我们对matplotlib.pyplot.violinplot()方法绘制提琴图相关属性。提琴图结合箱型图和密度图的特点,不仅展示数据的分布情况,还对数据的密度情况也展示出来。
以上是本期内容,欢迎大佬们点赞评论,下期见~