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