python 中箱线图绘制


一、箱线图图绘制参数详解

plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, 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)

  • x:指定要绘制箱线图的数据
  • notch:是否以凹口的形式展现箱线图,默认非凹口
  • sym:指定异常点的形状,默认为+号显示
  • vert:是否需要将箱线图垂直摆放,默认垂直摆放
  • whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差
  • positions:指定箱线图的位置,默认为[0,1,2…]
  • widths:指定箱线图的宽度,默认为0.5
  • patch_artist:bool类型参数,是否填充箱体的颜色;默认为False
  • meanline:bool类型参数,是否用线的形式表示均值,默认为False
  • showmeans:bool类型参数,是否显示均值,默认为False
  • showcaps:bool类型参数,是否显示箱线图顶端和末端的两条线(即上下须),默认为True
  • showbox:bool类型参数,是否显示箱线图的箱体,默认为True
  • showfliers:是否显示异常值,默认为True
  • boxprops:设置箱体的属性,如边框色,填充色等
  • labels:为箱线图添加标签,类似于图例的作用
  • filerprops:设置异常值的属性,如异常点的形状、大小、填充色等
  • medianprops:设置中位数的属性,如线的类型、粗细等
  • meanprops:设置均值的属性,如点的大小、颜色等
  • capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等
  • whiskerprops:设置须的属性,如颜色、粗细、线的类型等

返回值:result

字典将箱形图的每个组成部分映射到matplotlib.lines.Line2D创建实例列表该词典具有以下键(假定垂直框图):

  • boxes:箱图的主体,显示四分位数和中位数的置信区间(如果启用)。
  • medians:每个框的中间的水平线。
  • whiskers:垂直线延伸到最极端的非异常数据点。
  • caps:晶须末端的水平线。
  • fliers:表示超出晶须(传单)的数据的点。
  • means:表示均值的点或线。

官方链接:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.boxplot.html

 1 import pandas as pd
 2 import matplotlib.pyplot as plt
 3 # 读取数据
 4 Sec_Buildings = pd.read_excel('sec_buildings.xlsx')
 5 # 绘制箱线图
 6 plt.boxplot(x = Sec_Buildings.price_unit, # 指定绘图数据
 7             patch_artist=True, # 要求用自定义颜色填充盒形图,默认白色填充
 8             showmeans=True, # 以点的形式显示均值
 9             boxprops = {'color':'black','facecolor':'steelblue'}, # 设置箱体属性,如边框色和填充色
10             # 设置异常点属性,如点的形状、填充色和点的大小
11             flierprops = {'marker':'o','markerfacecolor':'red', 'markersize':3}, 
12             # 设置均值点的属性,如点的形状、填充色和点的大小
13             meanprops = {'marker':'D','markerfacecolor':'indianred', 'markersize':4}, 
14             # 设置中位数线的属性,如线的类型和颜色
15             medianprops = {'linestyle':'--','color':'orange'}, 
16             labels = [''] # 删除x轴的刻度标签,否则图形显示刻度标签为1
17            )
18 # 添加图形标题
19 plt.title('二手房单价分布的箱线图')
20 # 显示图形
21 plt.show()

     

 1 # 二手房在各行政区域的平均单价
 2 group_region = Sec_Buildings.groupby('region')
 3 avg_price = group_region.aggregate({'price_unit':np.mean}).sort_values('price_unit', ascending = False)
 4 print(avg_price)
 5 # 通过循环,将不同行政区域的二手房存储到列表中
 6 print(avg_price.index)
 7 region_price = []
 8 for region in avg_price.index:
 9     region_price.append(Sec_Buildings.price_unit[Sec_Buildings.region == region])
10 # 绘制分组箱线图
11 # print(region_price)
12 plt.boxplot(x = region_price, 
13             patch_artist=True,
14             labels = avg_price.index, # 添加x轴的刻度标签
15             showmeans=True, 
16             boxprops = {'color':'black', 'facecolor':'steelblue'}, 
17             flierprops = {'marker':'o','markerfacecolor':'red', 'markersize':3}, 
18             meanprops = {'marker':'D','markerfacecolor':'indianred', 'markersize':4},
19             medianprops = {'linestyle':'--','color':'orange'}
20            )
21 # 添加y轴标签
22 plt.ylabel('单价(元)')
23 # 添加标题
24 plt.title('不同行政区域的二手房单价对比')
25 # 显示图形
26 plt.show()

   

 

二、sns箱线图绘制http://seaborn.pydata.org/generated/seaborn.boxplot.html

 1 # 绘制分组箱线图
 2 sns.boxplot(x = 'region', y = 'price_unit', data = Sec_Buildings, 
 3             order = avg_price.index, showmeans=True,color = 'steelblue',
 4             flierprops = {'marker':'o','markerfacecolor':'red', 'markersize':3}, 
 5             meanprops = {'marker':'D','markerfacecolor':'indianred', 'markersize':4},
 6             medianprops = {'linestyle':'--','color':'orange'}
 7            )
 8 # 更改x轴和y轴标签
 9 plt.xlabel('')
10 plt.ylabel('单价(元)')
11 # 添加标题
12 plt.title('不同行政区域的二手房单价对比')
13 # 显示图形
14 plt.show()


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM