京东-优惠雷达
新人页面
精选商品
首月0月租体验,领12个月京东PLUS
自营热卖

利用Python - Matplotlib 绘制箱线图

易先生 1年前   阅读数 467 0

1.箱线图介绍

第一步:计算上四分位数,中位数,下四分位数(计算公式略)。

第二步:计算上四分位数和下四分位数之间的差值,四分位数差。

第三步:绘制箱线图的上下范围,上限为上四分位数,下限为下四分位数。在箱子内部中位数的位置绘制横线。

第四步:大于上四分位数1.5倍四分位数差的值,或者小于下四分位数1.5倍四分位数差的值,划为异常值。

第五步:异常值之外,最靠近上边缘和下边缘的两个值处,画横线,作为箱线图的触须。

第六步:极端异常值,即超出四分位数差3倍距离的异常值,用实心点表示;较为温和的异常值,即处于1.5倍-3倍四分位数差之间的异常值,用空心点表示。

第七步:为箱线图添加名称,数轴等。

箱线图的优点

  1. 可以直观明了地识别数据批中的异常值;
  2. 通过箱线图可以判断数据批的偏态和尾重;
  3. 通过箱线图还可以直观的比较多批数据的形状(均值,分散情况)。

例:
在这里插入图片描述

2. 数据介绍

首先通过爬虫获取了武汉市从2013.11到2020.03的空气质量的部分数据,尝试用python中的Matplotlib来绘制箱线图,实现数据可视化。

3.开始画图

  1. 导入本次绘图所需要的库
import pandas as pd
import matplotlib.pyplot as plt

2.导入所有需要的数据

data = pd.read_csv("Wuhan Air Quality.csv")

下图是本文部分csv格式的数据:

3.在导入的数据中,分别把前四组数据(AQI, PM 2.5,PM10,So2)用箱线图表示

## AQI(图一)##
plt.subplot(1,4,1)      #将四个箱线图画在一行中
Box1=data["AQI"]     #提取文件中AQI的数据
plt.grid(linestyle="--", alpha=0.3)    #绘制图像底部虚线.   (linestyle=ls,  markerfacecolor=mfc)
plt.boxplot(
            Box1,       
            patch_artist=True,         
            showmeans=True,    #显示均值点
            whis=8,   
            widths=0.2,      #箱体宽度
            boxprops={'color': 'black', 'facecolor': '#FFDF00'},   #设置箱体属性
            flierprops={'marker': 'o', 'mfc': 'red', 'color': 'black'},    #设置异常值属性
            meanprops={'marker': '+', 'mfc': 'black'},      #设置均值点属性
            medianprops={'ls': '--', 'color': 'orange'},      #设置中位数属性
            whiskerprops={'ls': '--', 'mfc': 'red', 'color': 'black'},  #设置触须属性
                   )

plt.title('AQI')    #子标题
plt.xticks([]).    #关闭x轴坐标显示



## PM 2.5(图二)##
plt.subplot(1,4,2)
Box2=data["PM 2.5"]
plt.grid(linestyle="--", alpha=0.3)
plt.boxplot( 
            Box2,
            patch_artist=True,
            showmeans=True,
            whis=8,
            widths=0.2,
            boxprops={'color': 'black', 'facecolor': '#2C4096'},
            flierprops={'marker': 'o', 'mfc': 'red', 'color': 'black'},
            meanprops={'marker': '+', 'mfc': 'black'},
            medianprops={'ls': '--', 'color': 'orange'},
            whiskerprops={'ls': '--', 'mfc': 'red', 'color': 'black'}
            )
plt.title('MP 2.5')
plt.xticks([])



## PM 10(图三)##
plt.subplot(1,4,3)
Box3=data["PM 10"]
plt.grid(linestyle="--", alpha=0.3)
plt.boxplot(Box3,
            patch_artist=True,
            showmeans=True,
            whis=8,
            widths=0.2,
            boxprops={'color': 'black', 'facecolor': '#019000'},
            flierprops={'marker': 'o', 'mfc': 'red', 'color': 'black'},
            meanprops={'marker': '+', 'mfc': 'black'},
            medianprops={'ls': '--', 'color': 'orange'},
            whiskerprops={'ls': '--', 'mfc': 'red', 'color': 'black'}
            )
plt.title('PM 10')
plt.xticks([])



## So2(图四)##
plt.subplot(1,4,4)
Box4=data["So2"]
plt.grid(linestyle="--", alpha=0.3)
plt.boxplot( Box4,
            patch_artist=True,
            showmeans=True,
            whis=8,
            widths=0.2,
            boxprops={'color': 'black', 'facecolor': '#D22C2C'},
            flierprops={'marker': 'o', 'mfc': 'red', 'color': 'black'},
            meanprops={'marker': '+', 'mfc': 'black'},
            medianprops={'ls': '--', 'color': 'orange'},
            whiskerprops={'ls': '--', 'mfc': 'red', 'color': 'black'}
            )
plt.title('So2')
plt.xticks([])

plt.suptitle('Box Plot')         #总标题
plt.show()



4.运行结果

箱线图

原创文章 2 获赞 5 访问量 171

注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: