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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python画统计图怎么在右上角表示哪条线代表什么_Python-matplotlib统计图之箱线图漫谈...

發布時間:2024/9/19 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python画统计图怎么在右上角表示哪条线代表什么_Python-matplotlib统计图之箱线图漫谈... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1)

箱線圖,又稱箱形圖(boxplot)或盒式圖,不同于一般的折線圖、柱狀圖或餅圖等傳統圖表,只是數據大小、占比、趨勢等等的呈現,其包含一些統計學的均值、分位數、極值等等統計量,因此,該圖信息量較大,不僅能夠分析不同類別數據平均水平差異(需在箱線圖中加入均值點),還能揭示數據間離散程度、異常值、分布差異等等。

在python中常用matplotlib的boxplot來繪制,最簡單繪制的如下:

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

np.random.seed(2) #設置隨機種子

df = pd.DataFrame(np.random.rand(5,4),

columns=['A', 'B', 'C', 'D'])#先生成0-1之間的5*4維度數據,再裝入4列DataFrame中

df.boxplot() #也可用plot.box()

plt.show()

Paste_Image.png

從圖形可以看出,A、B、C、D四組數A、D數據較集中(大部分在上下四分位箱體內),但都有異常值,C的離散程度最大(最大值與最小值之間距離),以均值為中心,B分布都有明顯右偏(即較多的值分布在均值的右側),A、C則有明顯左偏。

(2)

從分析的角度來說,上面boxplot最初始圖形已經夠用,但是在matplotlib庫下boxplot函數中包含n多參數,涉及到對框的顏色及形狀、線段線型、均值線、異常點的形狀大小等等設置,由于大多并不常用,用了幾個常用參數,作圖如下:

df.boxplot(sym='r*',vert=False,patch_artist=True,meanline=False,showmeans=True)

plt.show()

Paste_Image.png

其中,sym='r*',表示異常點的形狀,

vert=False,表示橫向還是豎向(True),,

patch_artist=True,(上下四分位框內是否填充,True為填充)

meanline=False,showmeans=True,是否有均值線及其形狀,meanline=True時,均值線也像中位數線一樣是條紅色線段,這樣容易與中位數線混淆。

另外,還有其他參數,比如notch表示中間箱體是否缺口,whis為設置數據的范圍,showcaps、showbox是否顯示邊框,可以參見

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.boxplot,如該網頁中圖形:

Paste_Image.png

左上圖是默認圖形,中上、右上是顯示均值點及形狀,左下是是否顯示箱體邊框,中下是帶缺口的箱體,右下是是否顯示異常值。

(3)

前邊說過,很多參數使用很少,但對于圖形來說,可能還能用到的就是美化,比如各條線的顏色,粗細程度等等。這里可用for循環來構造。

f=df.boxplot(sym='r*',patch_artist=True)

for box in f['boxes']:

# 箱體邊框顏色

box.set( color='#7570b3', linewidth=2)

# 箱體內部填充顏色

box.set( facecolor = '#1b9e77' )

for whisker in f['whiskers']:

whisker.set(color='r', linewidth=2)

for cap in f['caps']:

cap.set(color='g', linewidth=3)

for median in f['medians']:

median.set(color='DarkBlue', linewidth=3)

for flier in f['fliers']:

flier.set(marker='o', color='y', alpha=0.5)

plt.show()

Paste_Image.png

其中,boxes, 是25分位值和75分位值構成的box,

medians, 是中位值的橫線, 每個median是一個Line2D對象

whiskers, 是指從box 到error bar之間的豎線.

fliers, 是指error bar線之外的離散點.

caps, 是指error bar橫線.

means, 是均值的橫線,

(4)

還可以做子圖,如我們在最開始的DataFrame數據中加入分類數據列:

df['E'] = np.random.choice(['X', 'Y'], size=20)#加入以X、Y隨機分類的E列

print(df)

plt.figure()

df.boxplot(by='E')

plt.show()

Paste_Image.png

這樣我們就可以比較,不同類別X、Y在同一列下的數據分布情況及其差異。

總結

以上是生活随笔為你收集整理的python画统计图怎么在右上角表示哪条线代表什么_Python-matplotlib统计图之箱线图漫谈...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。