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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Matplotlib学习---用matplotlib画直方图/密度图(histogram, density plot)

發布時間:2024/5/24 综合教程 37 生活家
生活随笔 收集整理的這篇文章主要介紹了 Matplotlib学习---用matplotlib画直方图/密度图(histogram, density plot) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

直方圖用于展示數據的分布情況,x軸是一個連續變量,y軸是該變量在一定區間內的頻次。

下面利用Nathan Yau所著的《鮮活的數據:數據可視化指南》一書中的數據,學習畫圖。

數據地址:http://datasets.flowingdata.com/crimeRatesByState2005.csv

以下是這個數據文件的前5行:

           state  murder  forcible_rape  robbery  aggravated_assault  
0  United States     5.6           31.7    140.7               291.1   
1        Alabama     8.2           34.3    141.4               247.8   
2         Alaska     4.8           81.1     80.9               465.1   
3        Arizona     7.5           33.8    144.4               327.4   
4       Arkansas     6.7           42.9     91.1               386.8   

   burglary  larceny_theft  motor_vehicle_theft  population  
0     726.7         2286.3                416.7   295753151  
1     953.8         2650.0                288.3     4545049  
2     622.5         2599.1                391.0      669488  
3     948.4         2965.2                924.4     5974834  
4    1084.6         2711.2                262.1     2776221

這是美國各州各種犯罪行為的發生率(每10萬人口)。

我們把robbery和aggravated_assault的犯罪率分別分成12個區間,每個區間的犯罪率各為60次。讓我們看看各區間出現的次數。(也就是0-60這一犯罪率區間出現幾次,61-120出現幾次等等)

直方圖: ax.hist(x,bins=num_of_bins) --- x為變量,bins為柱子數量

代碼如下:

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
crime=pd.read_csv(r"http://datasets.flowingdata.com/crimeRatesByState2005.csv")
fig,ax=plt.subplots()

ax.hist(crime["robbery"],bins=12,histtype="stepfilled",alpha=0.6,label="robbery")
ax.hist(crime["aggravated_assault"],bins=12,histtype="stepfilled",alpha=0.6,label="aggravated_assault")
ax.legend()
ax.set_xticks(np.arange(0,721,60))
ax.set_xlim(0,720)
ax.set_yticks(np.arange(0,21,4))
plt.show()

圖像如下:

可以看出,robbery在60-120犯罪率這一區間出現次數最多,而aggravated_assault在120-180犯罪率這一區間出現次數最多。

此外,直方圖也可以被歸一化以顯示“相對”頻率,在命令里加上參數normed=True即可。這樣,y軸就變成了相對頻率(頻率=頻次/樣本總數;相對頻率=頻率/組距)。

顯示相對頻率的圖像如下:

下面我們自己創建一組符合正態分布的數據,再用matplotlib畫畫看。

import numpy as np
from matplotlib import pyplot as plt
fig,ax=plt.subplots()

np.random.seed(4) #設置隨機數種子
Gaussian=np.random.normal(0,1,1000) #創建一組平均數為0,標準差為1,總個數為1000的符合標準正態分布的數據
ax.hist(Gaussian,bins=25,histtype="stepfilled",normed=True,alpha=0.6)

plt.show()

圖像如下:

此時,圖像反映的是其概率密度,直方圖的面積總和為1。

除了頻次直方圖,我們還可以用KDE(kernel density estimation)獲取變量分布的平滑估計。具體請見下一篇:Matplotlib學習---用seaborn畫直方圖/核密度圖(histogram, kdeplot)。

總結

以上是生活随笔為你收集整理的Matplotlib学习---用matplotlib画直方图/密度图(histogram, density plot)的全部內容,希望文章能夠幫你解決所遇到的問題。

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