箱线图
理论:懒得介绍了。。。
用五位数描述数据
能够准确稳定地描绘出数据的离散分布情况,不受异常值影响。
不能精确地衡量数据分布的偏态和尾重程度;对于批量比较大的数据,反映的信息更加模糊以及用中位数代表总体评价水平有一定的局限性。

plt.boxplot(x, # 指定要绘制箱线图的数据
notch=None, # 是否是凹口的形式展现箱线图,默认非凹口;
sym=None, # 指定异常点的形状,默认为+号显示;
vert=None, # 是否需要将箱线图垂直摆放,默认垂直摆放;
whis=None, # 指定上下须与上下四分位的距离,默认为1.5倍的四分位差;
positions=None, # 指定箱线图的位置,默认为[0,1,2…];
widths=None, #指定箱线图的宽度,默认为0.5;
patch_artist=None,# 是否填充箱体的颜色;
meanline=None, # 是否用线的形式表示均值,默认用点来表示;
showmeans=None, # 是否显示均值,默认不显示;
showcaps=None, # 是否显示箱线图顶端和末端的两条线,默认显示;
showbox=None, # 是否显示箱线图的箱体,默认显示;
showfliers=None, # 是否显示异常值,默认显示;
boxprops=None, # 设置箱体的属性,如边框色,填充色等;
labels=None, # 为箱线图添加标签,类似于图例的作用;
flierprops=None, # 设置异常值的属性,如异常点的形状、大小、填充色等;
medianprops=None, # 设置中位数的属性,如线的类型、粗细等;
meanprops=None, # 设置均值的属性,如点的大小、颜色等;
capprops=None, # 设置箱线图顶端和末端线条的属性,如颜色、粗细等;
whiskerprops=None # 设置须的属性,如颜色、粗细、线的类型等;
)
实际数据操作:
import matplotlib.pyplot as plt
# 设置中文和负号正常显示
plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False
# 设置图形的显示风格
plt.style.use('ggplot')
# 绘图:daily_Ionset_r_c1_predicted的箱线图
data = [1200, 1300, 1400, 500,1500, 1600, 1700, 1800, 1900, 2000, 2100,4000]
plt.boxplot(x = data, # 指定绘图数据
patch_artist=True, # 要求用自定义颜色填充盒形图,默认白色填充
showmeans=True, # 以点的形式显示均值
boxprops = {'color':'black','facecolor':'#9999ff'}, # 设置箱体属性,填充色和边框色
flierprops = {'marker':'o','markerfacecolor':'red','color':'black'}, # 设置异常值属性,点的形状、填充色和边框色
meanprops = {'marker':'D','markerfacecolor':'indianred'}, # 设置均值点的属性,点的形状、填充色
medianprops = {'linestyle':'--','color':'orange'}) # 设置中位数线的属性,线的类型和颜色
# 设置y轴的范围
#plt.ylim(0,3000)
# 去除箱线图的上边框与右边框的刻度标签
plt.tick_params(top='off', right='off')
# 保存图像
plt.savefig('./results_imgs.png', bbox_inches='tight') #保存的文件名,裁剪掉图表多余的空白区域
# 显示图形
plt.show()
代码运行结果展示:

多组数据,多个箱线图
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
data = {
'A': [1000, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2500],
'B': [1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100],
'C': [1000, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000],
"D": [800, 1000, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900]
}
df = pd.DataFrame(data)
df.plot.box(title="example show")
plt.grid(linestyle="--", alpha=0.3)
plt.savefig('./results_imgs.png', bbox_inches='tight')
plt.show()

版权声明:本文为weixin_39819138原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。