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