一、箱线图图绘制参数详解
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()