Matplotlib 绘图 (二)
生活随笔
收集整理的這篇文章主要介紹了
Matplotlib 绘图 (二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Matplotlib 繪制箱線圖
(一) Matplotlib 繪制柱狀圖
(二) Matplotlib 繪制箱線圖
參考文獻:
1.https://www.cnblogs.com/shanger/p/13041426.html
2.https://blog.csdn.net/weixin_44613728/article/details/115190556
Matplotlib 繪制箱線圖
- Matplotlib 繪制箱線圖
- 一、 plt.boxplot() 參數詳解
- 二、 示例
- 1. 繪制多個分組箱線圖
- 2. 在多個分組箱線圖上疊加散點圖
一、 plt.boxplot() 參數詳解
Python 繪制箱線圖主要用 matplotlib 庫里 pyplot 模塊里的 boxplot() 函數。
plt.boxplot(x, # 指定要繪制箱線圖的數據;notch=None, # 是否是凹口的形式展現箱線圖,默認非凹口;sym=None, # 指定異常點的形狀,默認為+號顯示;vert=None, # 是否需要將箱線圖垂直擺放,默認垂直擺放;whis=None, # 指定上下須與上下四分位的距離,默認為1.5倍的四分位差;positions=None, # 指定箱線圖的位置,默認為[0,1,2…];widths=None, # 指定箱線圖的寬度,默認為0.5;patch_artist=None, # 是否填充箱體的顏色;bootstrap=None, #usermedians=None, #conf_intervals=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, # 設置須的屬性,如顏色、粗細、線的類型等manage_xticks=True, #autorange=False, #zorder=None, #hold=None, #data=None) #二、 示例
1. 繪制多個分組箱線圖
plt.boxplot(x,…)中的 x 是[ [1, 2, 3], [1,2,3,4,5], [8,9] ]格式的,即3個箱線圖各自的分組數據。
參數 positions=(1,1.4,1.8,2.8,3.2,3.6,4.6,5,5.4):將同一組的三個箱間隔設置為0.4,不同組間隔設為1,widths=0.3:每個箱寬度為0.3
運行結果:
2. 在多個分組箱線圖上疊加散點圖
參考文獻:
1.https://blog.csdn.net/weixin_40787712/article/details/123516154
使用 “zorder=2”這樣的確定疊加的圖層的先后次序,數字越大,越后。
#...準備數據等代碼略... fig = plt.figure() ax = fig.add_axes([0, 0, 1, 1]) # 畫2行3列的子圖 ax1 = plt.subplot(2, 3, 1) # 海北站SOS箱線圖 # 準備數據 bias = [] for j in range(0, 3):for t in range(0, 3):bias.append(list(Bias[t][j][0][0:7])) print(bias,'\n') PlotBiasGndTiResu(bias, ax1, "lower right") ax1.set_title('海北站SOS') ax1.set_ylabel('殘差') # 將箱線圖統計的所有點繪制到圖上 # spotx是各個箱線圖所有點的橫坐標 spotx = [[1,1,1,1,1,1,1],[1.4,1.4,1.4,1.4,1.4,1.4,1.4],[1.8,1.8,1.8,1.8,1.8,1.8,1.8],[2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8],[3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2],[3.6,3.6,3.6,3.6,3.6,3.6,3.6],[4.6,4.6,4.6,4.6,4.6,4.6,4.6],[5,5,5,5,5,5,5],[5.4,5.4,5.4,5.4,5.4,5.4,5.4]] for j in range(0, 3):for t in range(0, 3):#點的大小:s=10,畫圖層的先后:zorder=2,數字越大越后畫plt.scatter(spotx[j*3+t],bias[j*3+t], c='black', s=10, zorder=2) plt.show() #...其它子圖代碼略....def PlotBiasGndTiResu(bias, ax, loca):# plt.boxplot(x,...)中的 x 是[ [1, 2, 3], [1,2,3,4,5], [8,9] ]格式的,即3個箱線圖各自的分組數據。 # 參數 positions=(1,1.4,1.8,2.8,3.2,3.6,4.6,5,5.4):將同一組的三個箱間隔設置為0.4,不同組間隔設為1,widths=0.3:每個箱寬度為0.3 # 多圖層疊加時,控制畫圖層的先后:zorder=1,數字越大越后畫 bp = plt.boxplot(bias, patch_artist=True, widths=0.3, positions=(1, 1.4, 1.8, 2.8, 3.2, 3.6, 4.6, 5, 5.4), showmeans=False, medianprops={'lw': 1, 'color': 'black'}, zorder=1, # 設置異常點屬性,如點的形狀、填充色和點的大小 flierprops = {'marker':'o','markerfacecolor':'black', 'markersize':3})color_list = ["orange", "cornflowerblue", "deeppink","orange", "cornflowerblue", "deeppink","orange", "cornflowerblue", "deeppink"] # 將9個箱分別上色 for patch, color in zip(bp['boxes'], color_list):patch.set_facecolor(color) # 替換橫坐標x的值 x_position = [1, 2.8, 4.6] x_position_fmt = ["AG算法", "SG算法", "DL算法"] # 第一個參數為顯示位置,第二個參數為顯示的值 plt.xticks([i + 0.8 / 2 for i in x_position], x_position_fmt)labels = ["CSIF數據集", "GOMESIF數據集", "GOSIF數據集"] plt.legend(bp['boxes'], labels, loc=loca) # 繪制表示框,右下角繪制# 顯示網格 plt.grid(linestyle="--")運行結果:
總結
以上是生活随笔為你收集整理的Matplotlib 绘图 (二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 济南商讯在线计算机,迅时IP话机 NRP
- 下一篇: 浙大新增机器人工程、人工智能专业:今年招