1. 程式人生 > >【1.2】Matplotlib-boxplot(箱線圖)

【1.2】Matplotlib-boxplot(箱線圖)

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: 均值的橫線

修改後效果圖如下:


參考資料: