【Python】箱图boxplot--统计数据、观察数据利器
机器学习初学者
共 6816字,需浏览 14分钟
· 2021-11-30
本文系统详解利用python中seaborn.boxplot绘制箱图boxplot。
seaborn.boxplot是matplotlib.pyplot.boxplot的封装版,
更个性化的设置请研究matplotlib.pyplot.boxplot
本文将了解到什么?
1、数据集准备及箱图简介
2、seaborn.boxplot箱图外观设置
默认参数绘制箱图
箱图异常值属性设置
异常值关闭显示
异常值marker大小设置
异常值marker形状、填充色、轮廓设置
箱图上下横线属性设置
上下横线关闭
上下横线颜色、线型、线宽等设置
箱图上下须线属性设置
箱图箱子设置
箱子设置缺口
箱子不填充颜色
箱子外框、内部填充色
箱图中位数线属性设置
箱图均值属性设置
均值使用点显示、设置点形状、填充色
均值使用线显示 、线型、颜色设置
箱图中所有线属性设置
3、seaborn.boxplot分组箱图
分组绘图(方法一)
分组绘图(方法二)
箱子颜色设置
设置箱子颜色
设置箱子颜色饱和度
箱子间距设置
每个小组再按子组绘图
按顺序绘制箱图
还是使用鸢尾花数据集iris,iris详细介绍请戳:Python可视化|matplotlib10-绘制散点图scatter
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
import seaborn as sns
import palettable
from sklearn import datasets
plt.rcParams['font.sans-serif']=['SimHei'] # 用于显示中文
plt.rcParams['axes.unicode_minus'] = False # 用于显示中文
iris=datasets.load_iris()
x, y = iris.data, iris.target
pd_iris = pd.DataFrame(np.hstack((x, y.reshape(150, 1))),columns=['sepal length(cm)','sepal width(cm)','petal length(cm)','petal width(cm)','class'] )
查看数据集样子? pd_iris["sepal width(cm)"]简单统计,后文主要使用该列数据集绘图。
pd_iris["sepal width(cm)"].describe()#以上各个值其实都可以使用describe函数查看
count 150.000000
mean 3.054000
std 0.433594
min 2.000000
25% 2.800000(下四分位数,25% 的数据小于等于此值。)
50% 3.000000(中位数,50% 的数据小于等于此值。)
75% 3.300000(上四分位数,75% 的数据小于等于此值。)
max 4.400000
Name: sepal width(cm), dtype: float64
上面注释部分很好的解释了下面箱图中四分位数的含义
2、seaborn.boxplot箱图外观设置
默认参数绘制箱图
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],#传入一组数据
orient='v'#箱子垂直显示,默认为'h'水平显示
)
plt.show()
箱图异常值属性设置
异常值关闭显示
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],
showfliers=False,#异常值关闭显示
)
plt.show()
异常值marker大小设置
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],
orient='v',
fliersize=15,#设置离散值marker大小,默认为5
)
plt.show()
异常值marker形状、填充色、轮廓设置
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],
orient='v',
flierprops = {'marker':'o',#异常值形状
'markerfacecolor':'red',#形状填充色
'color':'black',#形状外廓颜色
},
)
plt.show()
箱图上下横线属性设置
上下横线关闭
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],
showcaps=False,#上下横线关闭
)
plt.show()
上下横线颜色、线型、线宽等设置
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],
capprops={'linestyle':'--','color':'red'},#设置上下横线属性
)
plt.show()
箱图上下须线属性设置
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],
whiskerprops={'linestyle':'--','color':'red'},#设置上下须属性
)
plt.show()
箱图箱子设置
箱子设置缺口
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],
orient='v',
notch=True,#箱子设置缺口
)
plt.show()
箱子不填充颜色
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],
orient='v',
color='white',#箱子不填充
)
plt.show()
箱子外框、内部填充色
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],
boxprops = {'color':'red',#箱子外框
'facecolor':'pink'#箱子填充色
},#设置箱子属性
)
plt.show()
箱图中位数线属性设置
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],
medianprops = {'linestyle':'--','color':'red'},#设置中位数线线型及颜色
)
plt.show()
**箱图均值属性设置 **
均值使用点显示、设置点形状、填充色
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],
showmeans=True,#箱图显示均值,
meanprops = {'marker':'D','markerfacecolor':'red'},#设置均值属性
)
plt.show()
均值使用线显示 、线型、颜色设置
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],
showmeans=True,#箱图显示均值,
meanline=True,#显示均值线
meanprops = {'linestyle':'--','color':'red'},#设置均值线属性
)
plt.show()
箱图中所有线属性设置
plt.figure(dpi=100)
sns.boxplot(y=pd_iris["sepal width(cm)"],
orient='v',
linewidth=8#设置箱子等线的宽度
)
plt.show()
3、seaborn.boxplot分组箱图
分组绘图(方法一)
plt.figure(dpi=100)
class_name=[iris.target_names[0] if i==0.0 else iris.target_names[1] if i==1.0 else iris.target_names[2] for i in pd_iris['class']]
sns.boxplot(x=class_name,#按照pd_iris["sepal width(cm)"]分组,即按照每种鸢尾花('setosa', 'versicolor', 'virginica')分组绘图
y=pd_iris["sepal width(cm)"],#绘图数据
orient='v'
)
plt.show()
分组绘图(方法二)
plt.figure(dpi=100)
sns.boxplot(x='class',
y='sepal width(cm)',
data=pd_iris,#data的作用就是x,y每次不需要输入pd_iris
orient='v'
)
plt.show()
箱子颜色设置
设置箱子颜色
import palettable
plt.figure(dpi=100)
sns.boxplot(x='class',
y='sepal width(cm)',
data=pd_iris,
orient='v',
palette=palettable.tableau.TrafficLight_9.mpl_colors,#设置每个箱子颜色
)
plt.show()
设置箱子颜色饱和度
import palettable
plt.figure(dpi=100)
sns.boxplot(x='class',
y='sepal width(cm)',
data=pd_iris,
orient='v',
palette=palettable.tableau.TrafficLight_9.mpl_colors,
saturation=0.3,#设置颜色饱和度
)
plt.show()
箱子间距设置
import palettable
plt.figure(dpi=100)
sns.boxplot(x='class',
y='sepal width(cm)',
data=pd_iris,
orient='v',
palette=palettable.tableau.TrafficLight_9.mpl_colors,
saturation=0.3,#设置颜色饱和度
width=1.0,#设置箱子之间距离,为1时,每个箱子之间距离为0
)
plt.show()
每个小组再按子组绘图
plt.figure(dpi=100)
class_name=[iris.target_names[0] if i==0.0 else iris.target_names[1] if i==1.0 else iris.target_names[2] for i in pd_iris['class']]
sns.boxplot(x=class_name,
y=pd_iris['sepal width(cm)'],
hue=pd_iris['petal width(cm)'],#每类按照子类分组:上图三类再按照'sepal width(cm)'分组绘图
orient='v'
)
plt.show()
按顺序绘制箱图
plt.figure(dpi=100)
class_name=[iris.target_names[0] if i==0.0 else iris.target_names[1] if i==1.0 else iris.target_names[2] for i in pd_iris['class']]
sns.boxplot(x=class_name,
y=pd_iris["sepal width(cm)"],
hue=pd_iris['petal width(cm)'],
order=["virginica", "versicolor", "setosa"],#设置箱子的显示顺序
hue_order=sorted(list(pd_iris['petal width(cm)'].unique())),#设置每个子类中箱子的显示顺序,此处设置从小到大排序
orient='v'
)
plt.show()
4、参考资料
- 以上涉及到单颜色设置,详细见:Python可视化|matplotlib05-内置单颜色(一);Python可视化|matplotlib06-外部单颜色(二);
- 涉及到colormap设置,详细见:Python可视化|matplotlib07-自带颜色条Colormap(三);Python可视化|08-Palettable库中颜色条Colormap(四)
- 涉及到marker及linestyle设置,详细见:Python可视化|matplotlib03-一文掌握marker和linestyle使用
- https://matplotlib.org/api/_as_gen/matplotlib.pyplot.boxplot.html?highlight=boxplot#matplotlib.pyplot.boxplot
- http://seaborn.pydata.org/generated/seaborn.boxplot.html#seaborn.boxplot
往期精彩回顾
- 适合初学者入门人工智能的路线及资料下载
- 机器学习及深度学习笔记等资料打印
- 机器学习在线手册
- 深度学习笔记专辑
- 《统计学习方法》的代码复现专辑
- AI基础下载
- 黄海广老师《机器学习课程》视频课
- 黄海广老师《机器学习课程》711页完整版课件
评论
金融研究 | 使用Python测量关键审计事项的「信息含量」
Tips: 公众号推送后内容只能更改一次,且只能改20字符。如果内容出问题,或者想更新内容, 只能重复推送。为了更好的阅读体验,建议阅读本文博客版, 链接地址https://textdata.cn/blog/2023-01-13-information-content-of-critical-aud
大邓和他的Python
0
CVPR 2024|大视觉模型的开山之作!无需任何语言数据即可打造大视觉模型
↑ 点击蓝字 关注极市平台作者丨科技猛兽编辑丨极市平台极市导读 本文提出一种序列建模 (sequential modeling) 的方法,不使用任何语言数据,训练大视觉模型。>>加入极市CV技术交流群,走在计算机视觉的最前沿本文目录1 序列建模打造大视觉模型(来自 U
极市平台
1
金融研究(更新) | 使用Python构建关键审计事项的「信息含量」
Tips: 公众号推送后内容只能更改一次,且只能改20字符。如果内容出问题,或者想更新内容, 只能重复推送。为了更好的阅读体验,建议阅读本文博客版, 链接地址https://textdata.cn/blog/2023-01-13-information-content-of-critical-aud
大邓和他的Python
0
谷歌员工爆料 Python 基础团队原地解散
转自 | 机器之心编辑 | 蛋酱什么?谷歌解雇了整个 Python 基础团队?「当与你直接共事的每个人,包括你的主管,都被裁员 —— 哦,是职位被削减,而你被要求安排他们的替代者入职,这些人被告知在不同的国家担任同样的职位,但他们并不为此感到高兴,这是很艰难的一天。」发布这一动态的 Tho
机器学习算法与Python实战
0
五一抢票难,Github上这几个Python项目,你可以试试
又到五一长假啦(虽然其实就放了1天),大家是打算家里蹲or出去玩,又或者是在公司加班呢...今天给大家介绍三个和12306相关的项目,看看你是否用得上。/01/ py12306py12306购票助手,顾名思义,12306买票的~需要在python 3.6以上版本运行程序。1. 安装依赖gi
Crossin的编程教室
0
Python加速运行技巧
Python 是一种脚本语言,相比 C/C++ 这样的编译语言,在效率和性能方面存在一些不足。但是,有很多时候,Python 的效率并没有想象中的那么夸张。本文对一些 Python 代码加速运行的技巧进行整理。 0. 代码优化原则 本文会介绍不少的 Python 代码加速运行的技巧。在深入代码优化细
机器学习算法与Python实战
0
这五款牛逼的 IDEA 插件,堪称代码质量检查利器!
来源:blog.csdn.net/a745233700?type=blog一、Alibaba Java Coding Guidelines二、CheckStyle:三、PMD四、FindBugs:五、SonarLint:总结随着业务的发展,系统会越来越庞大,原本简单稳定的功能,可能在不断迭代后复杂度
码农突围
0
为什么我们公司还在用 Python 开发项目?
作者:哇哒嘻哇https://www.zhihu.com/question/278798145/answer/3416549119最近几年里,经常看到某些曾重度使用 Python 的大公司迁移成其它语言技术栈,但是,那些小公司/小团队的情况如何呢?一直很想了解那些仍在坚持使用 Python,且支撑业
机器学习算法与Python实战
0