一、箱線圖圖繪制參數詳解
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()