Python利用 matplotlib 繪制直方圖

復習回顧:

經過前面對 matplotlib 模塊從底層架構、基本繪制步驟等學習,我們已經學習瞭折線圖、柱狀圖的繪制方法。

matplotlib 模塊基礎:對matplotlib 模塊常用方法進行學習

matplotlib 模塊底層原理:學習matplotlib 模塊腳本層、美工層及後端層

matplotlib 繪制折線圖:總結折線圖相關屬性和方法

matplotlib 繪制柱狀圖:總結柱狀圖相關屬性和方法

在分析數據的時候,我們會根據數據的特點來選擇對應圖表來展示,需要表示質量這一概念,需要用直方圖。

1. 直方圖概述

1.1什麼是直方圖?

  • 直方圖是一種可視化表示數據在連續間隔或者特定時間段內容的分佈情況
  • 直方圖又稱為質量分佈圖,屬於條行圖的一種
  • 直方圖x軸表示數據類型,縱軸表示分佈情況,每個數據寬度可以任意變化

1.2直方圖使用場景

  • 直方圖用於概率分佈,展示一組數據在指定范圍內的出現概率
  • 可以用於展示數據分佈頻率情況
  • 用於眾數、中位數的位置
  • 關註數據存在缺口或者異常值

1.3直方圖繪制步驟

  • 導入matplotlib.pyplot模塊
  • 準備數據,可以使用numpy/pandas整理數據
  • 調用pyplot.hist()繪制直方圖

1.4案例展示

本次案例我們來分析公司員工的身高分佈情況

案例數據準備,使用numpy隨機生成200個升高數據

import numpy as np

x_value = np.random.randint(140,180,200)

繪制直方圖:

import matplotlib.pyplot as plt

plt.hist(x_value,bins=10)

plt.title("data analyze")
plt.xlabel("height")
plt.ylabel("rate")

plt.show()

2. 直方圖屬性

2.1設置顏色

  • 設置長條形顏色關鍵字:facecolor
  • 設置邊框的顏色關鍵字:edgecolor

顏色選擇值:

  • 使用顏色的英語單詞如紅色”red”,黃色”yellow”
  • 使用顏色簡稱:紅色”r”,藍色”b”
  • 使用rgb:格式(r,g,b),取值范圍:0~1

2.2設置長條形數目

  • 關鍵字:bins
  • 可選項,默認為10

2.3設置透明度

  • 關鍵字:alpha
  • 默認為0,取值范圍為0~1

2.4設置樣式

  • 關鍵字:histtype
  • 取值說
屬性值 說明
‘bar’ 柱狀形數據並排,默認值
‘barstacked’ 柱狀形數據重疊並排
‘step’ 柱狀形顏色不填充
‘stepfilled’ 填充的線性

我們對第一節直方圖添加柱狀形不填充,邊框顏色為紅色

plt.hist(x_value,bins=10,edgecolor="r",histtype="step")


邊框設置為紅色,透明度為0.5

plt.hist(x_value,bins=10,edgecolor="r",histtype="bar",alpha=0.5)


3. 添加折線直方圖

在直方圖中,我們也可以加一個折線圖,輔助我們查看數據變化情況

  • 首先通過pyplot.subplot()創建Axes對象
  • 通過Axes對象調用hist()方法繪制直方圖,返回折線圖所需要的下x,y數據
  • 然後Axes對象調用plot()繪制折線圖
  • 我們對第一節代碼進行改造一下
fig,ax = plt.subplots()

n,bins_num,pat = ax.hist(x_value,bins=10,alpha=0.75)

ax.plot(bins_num[:10],n,marker = 'o',color="yellowgreen",linestyle="--")

4. 堆疊直方圖

我們有時候會對吧同樣數據范圍情況下,對比兩組不同對象群體收集的數據差異

準備兩組數據:

import numpy as np

x_value = np.random.randint(140,180,200)
x2_value = np.random.randint(140,180,200)
  • 直方圖屬性data:以列表的形式傳入兩組數據
  • 設置直方圖stacked:為True,允許數據覆蓋
plt.hist([x_value,x2_value],bins=10,stacked=True)


5. 不等距直方圖

我們上述繪制的直方圖都是等距的,我們可以指定一組數據傳入bins屬性

  • bins 關鍵字:指定直方圖的柱狀形個數
  • 更改上述的代碼後,看看效果吧
bin_num = [140,155,160,170,175,180]
plt.hist([x_value,x2_value],bins=bin_num,alpha=0.75,stacked=True)


6. 多類直方圖

我們在使用直方圖查查看數據的頻率時,有時候會查看多種類型數據出現的頻率。

這時候我們可以以列表的形式傳入多種數據給hist()方法的x數據

x_value = [np.random.randint(140,180,i) for i in [100,200,300]]

plt.hist(x_value,bins=10,edgecolor="r",histtype="bar",alpha=0.5,label=["A公司","B公司","C公司"])

總結:
我們對matplotlib模塊中詳細學習繪制各種直方圖標相關屬性和方法。在需要查看數據分佈頻率時,我們可以使用hist()方法繪制直方圖,同時也可以添加折線來輔助查看

到此這篇關於Python利用 matplotlib 繪制直方圖的文章就介紹到這瞭,更多相關Python matplotlib 模塊內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: