python绘制箱线图-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:表示均值的点或线。
1 importpandas as pd2 importmatplotlib.pyplot as plt3 #读取数据
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 inavg_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()
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()