箱型图(box plot)也被称为箱须图(box-whisker plot)、箱线图、盒图,它能显示出一组数据的最大值、最小值、中位数及上下四位数,能反映出一组或多组连续型定量数据分布的中心位置和散布分布,因其形状如箱子而得名。
从箱型图中可以得出:平均值、中位数和上下四分位数;异常值;数据对称情况,数据分组的紧密程度;数据分布是否出现偏斜。
代码如下(我是用jupyter notebook做的):
import pandas as pd
from plotnine import *
#先用pandas读取文件
df = pd.read_csv('Distribution_Data.csv')
#一开始作图的时候发现横坐标并没有按照一定的顺序排列,这两行代码可以帮助我们排列,也可以不加这两行
#代码,看看是什么效果
category = pd.api.types.CategoricalDtype(categories= ["n", "s", "k", "mm"],ordered=True)
df['class']=df['class'].astype(category)
#ggplot()是底层绘图函数,为必须元素;geom_boxplot()是绘制的几何图形,意思是绘制一个箱型图;
#geom_jitter()是绘制抖动散点图的,代码里已经注释掉了,可以把注释消了试试效果;
#scale_fill_hue()是设置色彩变化参数的,可以改一改参数试试效果;
#theme_matplotlib()可以改变背景,把这个注释之后会发现背景改变了,比如网格线或者灰色背景什么的;
#theme()调整主题,这个没有去尝试一些变化
box_plot=(ggplot(df,aes(x='class',y="value",fill="class"))
+geom_boxplot(show_legend=False)
#+geom_jitter(fill='black',shape='.',width=0.3,size=3,stroke=0.1,show_legend=False)
+scale_fill_hue(s = 0.90, l = 0.65, h=0.0417,color_space='husl')
+theme_matplotlib()
+theme(aspect_ratio =1.05,
dpi=100,
figure_size=(4,4)))
box_plot
小提琴图(vilion plot)用于显示数据分布及其概率密度,结合了箱型图和密度图的特征,主要用来显示数据的分布情况。在样本量较大的时候更为适用。
代码如下(同样jupyter notebook):
import pandas as pd
from plotnine import *
df = pd.read_csv('Distribution_Data.csv')
category = pd.api.types.CategoricalDtype(categories= ["n", "s", "k", "mm"],ordered=True)
df['class']=df['class'].astype(category)
#geom_violin()意思是绘制小提琴图
violin_plot = (ggplot(df,aes(x='class',y='value',fill='class'))
+geom_violin(show_legend=False)
+geom_boxplot(fill='white',width=0.1,show_legend=False)
#+geom_jitter(fill='black',shape='.',width=0.3,size=3,stroke=0.1,show_legend=False)
+scale_fill_hue(s=0.90,l=0.65,h=0.0417,color_space='husl')
+theme_matplotlib())
violin_plot
刚刚开始学,里面有很多不懂得地方,自己写给自己看的。
要是别的朋友看的话欢迎大家讨论,一起进步,如果需要练习数据的话可以给我说。
代码和数据参考的《Python数据可视化之美:专业图标绘制指南》