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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

matplotlib 均值_matplotlib可视化箱线图

發(fā)布時間:2024/3/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matplotlib 均值_matplotlib可视化箱线图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言針對離散變量我們可以使用常見的條形圖和餅圖完成數(shù)據(jù)的可視化工作,那么,針對數(shù)值型變量,我們也有很多可視化的方法,例如箱線圖、直方圖、折線圖、面積圖、散點圖等等。先來數(shù)值型變量的箱線圖繪制。箱線圖一般用來展現(xiàn)數(shù)據(jù)的分布(如上下四分位值、中位數(shù)等),同時,也可以用箱線圖來反映數(shù)據(jù)的異常情況。

boxplot函數(shù)的參數(shù)解讀

繪圖之前,我們先來講解一下matplotlib包中boxplot函數(shù)的參數(shù)含義及使用方法:

plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=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)x:指定要繪制箱線圖的數(shù)據(jù);

notch:是否是凹口的形式展現(xiàn)箱線圖,默認非凹口;

sym:指定異常點的形狀,默認為+號顯示;

vert:是否需要將箱線圖垂直擺放,默認垂直擺放;

whis:指定上下須與上下四分位的距離,默認為1.5倍的四分位差;

positions:指定箱線圖的位置,默認為[0,1,2…];

widths:指定箱線圖的寬度,默認為0.5;

patch_artist:是否填充箱體的顏色;

meanline:是否用線的形式表示均值,默認用點來表示;

showmeans:是否顯示均值,默認不顯示;

showcaps:是否顯示箱線圖頂端和末端的兩條線,默認顯示;

showbox:是否顯示箱線圖的箱體,默認顯示;

showfliers:是否顯示異常值,默認顯示;

boxprops:設(shè)置箱體的屬性,如邊框色,填充色等;

labels:為箱線圖添加標簽,類似于圖例的作用;

filerprops:設(shè)置異常值的屬性,如異常點的形狀、大小、填充色等;

medianprops:設(shè)置中位數(shù)的屬性,如線的類型、粗細等;

meanprops:設(shè)置均值的屬性,如點的大小、顏色等;

capprops:設(shè)置箱線圖頂端和末端線條的屬性,如顏色、粗細等;

whiskerprops:設(shè)置須的屬性,如顏色、粗細、線的類型等;

生成隨機數(shù)

在這里我們利用 numpy 庫生成三組正態(tài)分布隨機數(shù):

import matplotlib.pyplot as plt

import numpy as np

all_data=[np.random.normal(0,std,100) for std in range(1,4)]

figure,axes=plt.subplots() #得到畫板、軸

axes.boxplot(all_data,patch_artist=True) #描點上色

plt.show() #展示

plt.subplots 顧名思義是子圖集合,當不指定 plt.subplots() 的 nrows 和 ncols 參數(shù)值時,默認只生成一張圖。

Note:默認 patch_artist=False,所以我們需要指定其參數(shù)值為 True,即可自動填充顏色。

多圖輸出有時我們會有把多張圖放在同一行輸出的對比需求,這時只需指定 plt.subplots() 函數(shù)的 nrows,ncols 參數(shù)值,舉個例子,我想生成一個 2x3 的面板,即每一行放三張圖,只需設(shè)定 nrows=2,ncols=3。

當然,你還可以通過參數(shù) figsize 指定圖形大小。

import matplotlib.pyplot as plt

import numpy as np

all_data=[np.random.normal(0,std,100) for std in range(1,4)]

#首先有圖(fig),然后有軸(ax)

fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(9,4))

bplot1=axes[0].boxplot(all_data,

vert=True,

patch_artist=True)

#axes[0]表示在第一張圖的軸上描點畫圖

#vert=True表示boxplot圖是豎著放的

#patch_artist=True 表示填充顏色

bplot2 = axes[1].boxplot(all_data,

notch=True, # 切口形狀

vert=True,

patch_artist=True)

plt.show()

# 第一張圖是矩形箱線圖

# 第二張圖是 notch 形狀的箱線圖

# 顯然,把兩張圖放在同一行輸出非常有利于對比觀察圖形差異。

1.1.4 美化圖形

基本圖形畫得差不多了,接下來就只需要讓它美化一下!

我們先來查看一下我們之前作出的箱線圖對象的類型:type(bplot1)

#dict

返回字典字典類型顏色填充 顏值即正義!要選個好的配色不容易呢…

填充顏色基本遵循以下步驟:指定箱線圖中每個箱子的填充顏色,如:red、green、blue、pink 等 構(gòu)造字典存放箱子配色 —— {箱線圖中每個箱子patch:對應(yīng)的配色color}

重新上色 —— patch.set_facecolor(color)

import matplotlib.pyplot as plt

import numpy as np

all_data=[np.random.normal(0,std,100) for std in range(1,4)]

#首先有圖(fig),然后有軸(ax)

fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(9,4))

bplot1=axes[0].boxplot(all_data,

vert=True,

patch_artist=True)

bplot2 = axes[1].boxplot(all_data,

notch=True,

vert=True,

patch_artist=True)

#顏色填充

colors = ['pink', 'lightblue', 'lightgreen']

for bplot in (bplot1, bplot2):

for patch, color in zip(bplot['boxes'], colors):

patch.set_facecolor(color)

plt.show()

添加網(wǎng)格線

你可以:指定在x軸上添加網(wǎng)格線(ax.xaxis.grid(True)),或者在y軸上添加網(wǎng)格線(ax.yaxis.grid(True))

指定 x 軸和 y 軸上的刻度個數(shù)(ax.set_xticks([1,2,3]),ax.set_yticks([1,2,3,4,5,6,7,8]))

設(shè)置 x 軸名稱(ax.set_xlabel("xlabel"))

設(shè)置 y 軸名稱(ax.set_xlabel("ylabel"))

import matplotlib.pyplot as plt

import numpy as np

all_data=[np.random.normal(0,std,100) for std in range(1,4)]

#首先有圖(fig),然后有軸(ax)

fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(9,4))

bplot1=axes[0].boxplot(all_data,

vert=True,

patch_artist=True)

bplot2 = axes[1].boxplot(all_data,

notch=True,

vert=True,

patch_artist=True)

#顏色填充

colors = ['pink', 'lightblue', 'lightgreen']

for bplot in (bplot1, bplot2):

for patch, color in zip(bplot['boxes'], colors):

patch.set_facecolor(color)

# 加水平網(wǎng)格線

for ax in axes:

ax.yaxis.grid(True) #在y軸上添加網(wǎng)格線

ax.set_xticks([y+1 for y in range(len(all_data))] ) #指定x軸的軸刻度個數(shù)

## [y+1 for y in range(len(all_data))]運行結(jié)果是[1,2,3]

ax.set_xlabel('xlabel') #設(shè)置x軸名稱

ax.set_ylabel('ylabel') #設(shè)置y軸名稱

# 添加刻度

# 添加刻度名稱,我們需要使用 plt.setp() 函數(shù):

# 加刻度名稱

plt.setp(axes, xticks=[1,2,3],

xticklabels=['x1', 'x2', 'x3'])

# 我們的刻度數(shù)是哪些,以及我們想要它添加的刻度標簽是什么。

plt.show()

import matplotlib.pyplot as plt

import numpy as np

# 添加標題

# 使用 ax.set_title 來設(shè)置單個圖形主標題,用 fig.suptitle 來設(shè)置整張畫板的標題:

data=np.random.binomial(n=10,p=0.76,size=(10,3))

labels=list("ABC")

fig,ax=plt.subplots(figsize=(9,6))

ax.boxplot(data,labels=labels,patch_artist=True)

plt.rcParams['font.sans-serif']=['SimHei'] #正確顯示中文

plt.rcParams['axes.unicode_minus']=False #用來正確顯示負號

ax.set_title("設(shè)置 fontsize=15 的標題",fontsize=15) #設(shè)置字體大小為15號字體

fig.suptitle("Boxplot Examples",fontsize=24)

plt.show()

# 想必細心的朋友已經(jīng)發(fā)現(xiàn)了我在代碼里偷偷加了兩行設(shè)置字體的代碼

# 這兩行代碼專為防止出現(xiàn)中文亂碼而生!

# plt.rcParams['font.sans-serif']=['SimHei'] # 用來正確顯示中文

# plt.rcParams['axes.unicode_minus']=False # 用來正確顯示負號

import matplotlib.pyplot as plt

# 其他參數(shù)

# 在圖上標記出均值線

fig,axes=plt.subplots(1,2,figsize=(9,5))

axes[0].boxplot(data,labels=labels,showmeans=True,meanline=False)

axes[0].set_title("默認 meanline=False",fontsize=15)

axes[1].boxplot(data,labels=labels,showmeans=True,meanline=True)

axes[1].set_title("meanline=True",fontsize=15)

plt.show()

# Note:

# meanline=False,那么均值位置會在圖中用小三角表示出來

# meanline=True,那么均值位置會在圖中用虛線表示出來

import matplotlib.pyplot as plt

# 在圖上去除離群值

fig,axes=plt.subplots(1,2,figsize=(9,5))

axes[0].boxplot(data,labels=labels,patch_artist=True)

axes[0].set_title("默認 showfliers=True",fontsize=15)

axes[1].boxplot(data,labels=labels,patch_artist=True,showfliers=False)

axes[1].set_title("showfliers=False",fontsize=15)

plt.show()

# 默認 showfliers=True,那么圖中會顯示出離群值

# showfliers=False,那么圖中會去除離群值

matplotlib可視化箱線圖Github地址?github.com

此文章為最迷糊原創(chuàng),特此聲明!

總結(jié)

以上是生活随笔為你收集整理的matplotlib 均值_matplotlib可视化箱线图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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