日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Matplotlib 绘图 (二)

發(fā)布時(shí)間:2024/3/13 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Matplotlib 绘图 (二) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

#...準(zhǔn)備數(shù)據(jù)等代碼略... bias = []for j in range(0,3):for t in range(0,3):bias.append(list(Bias[t][j]))#...代碼略...fig = plt.figure()ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])ax.set_ylabel('偏差Bias')ax.set_xlabel('物候提取算法')#(0.2,0.2,0.2) 分別為該顏色的RGB值,(均為0~1的數(shù)據(jù))color_list = [(0.2, 0.2, 0.2), (0.2*2, 0.2*2, 0.2*2), (0.2*4, 0.2*4, 0.2*4), (0.2, 0.2, 0.2), (0.2*2, 0.2*2, 0.2*2), (0.2*4, 0.2*4, 0.2*4), (0.2, 0.2, 0.2), (0.2*2, 0.2*2, 0.2*2), (0.2*4, 0.2*4, 0.2*4)]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=True)# 將9個(gè)箱分別上色 for patch, color in zip(bp['boxes'], color_list):patch.set_facecolor(color) ax.set_ylabel('偏差Bias')ax.set_xlabel('物候提取算法')# 替換橫坐標(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='best') # 繪制表示框,右下角繪制# plt.savefig(fname="pic.png", figsize=[10, 10])#顯示網(wǎng)格plt.grid(linestyle="--", alpha=0.5) # 繪制圖中虛線(xiàn) 透明度0.3plt.show()

運(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。