【1.2】Matplotlib-boxplot(箱線圖)
阿新 • • 發佈:2019-01-23
Matplotlib-boxplot(箱線圖)
箱線圖:是一種用作顯示一組資料分散情況資料的統計圖
示例1:
# plt.plot.box()繪製 import numpy as np import pandas as pd import matplotlib.pyplot as plt fig,axes = plt.subplots(2,1,figsize=(10,6)) df = pd.DataFrame(np.random.rand(10,5),columns=['a','b','c','d','e']) color = dict(boxes='DarkGreen',whiskers='DarkOrange',medians='DarkBlue',caps='Gray') # 箱線圖著色 # whiskers:分位數與error bar橫線之間豎線的顏色 # medians:中位數線顏色 # caps:error bar橫線顏色 df.plot.box(ylim = [0,1.2], grid = True, color = color, ax = axes[0] ) df.plot.box(vert = False, positions = [1,4,5,6,8], ax = axes[1], grid = True, color = color ) # vert:是否垂直,預設為True # position:箱線圖佔位 plt.savefig('G:/#####################每日計劃##########################################/部落格圖片/python資料分析/Matplotlib-boxplot(箱線圖)/1.png')
效果如下圖:
示例2:
import numpy as np import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame(np.random.rand(10,5),columns=['A','B','C','D','E']) plt.figure(figsize =(10,4)) f = df.boxplot(sym = 'o', vert = True, whis = 1.5, patch_artist = True, meanline = False, showmeans = True, showbox = True, showcaps = True, showfliers = True, notch = False, return_type = 'dict' ) plt.title('boxplot') plt.savefig('G:/#####################每日計劃##########################################/部落格圖片/python資料分析/Matplotlib-boxplot(箱線圖)/3.png') ''' 引數說明: sym:表示異常點的形狀 vert:是否垂直,箱線圖是橫向的(False)還是豎向的(True) whis: IQR,預設1.5,也可以設定區間比如[5,95],代表強制上下邊緣為資料95%和5%位置 patch_artist:上下四分位框內是否填充,True為填充 meanline:是否用線的形式表示均值,預設用點表示 showmeans:是否顯示均值,預設不顯示 showbox:是否顯示箱線圖的箱體 showcaps:是否顯示邊緣線,箱線圖頂端和末端的兩條線預設顯示 showfliers:是否顯示異常值 notch:中間箱體是否缺口 return_type:返回型別 其它 positions:指定箱線圖的位置,預設為[0.1.2...] widths:指定箱線圖的寬度,預設為0.5 '''
效果圖如下:
示例3:在示例2的基礎上修改箱線圖
for box in f['boxes']: box.set( color='b', linewidth=1) # 箱體邊框顏色 box.set( facecolor = 'b' ,alpha=0.5) # 箱體內部填充顏色 for whisker in f['whiskers']: whisker.set(color='k', linewidth=0.5,linestyle='-') for cap in f['caps']: cap.set(color='gray', linewidth=2) for median in f['medians']: median.set(color='DarkBlue', linewidth=2) for flier in f['fliers']: flier.set(marker='o', color='y', alpha=0.5) # boxes: 箱線 # medians: 中位值的橫線, # whiskers: 從box到error bar之間的豎線. # fliers: 異常值 # caps: error bar橫線 # means: 均值的橫線
修改後效果圖如下:
參考資料: