利用Matplotlib繪制折線圖、散點(diǎn)圖、柱狀圖、直方圖、餅圖的實(shí)例
一、折線圖
以折線的上升或下降來(lái)表示統(tǒng)計(jì)數(shù)量的增減變化的統(tǒng)計(jì)圖
特點(diǎn):能夠顯示數(shù)據(jù)的變化趨勢(shì),反映事物的變化情況(變化)
函數(shù):plt.plot(x, y)
import matplotlib.pyplot as plt
import random
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"] # 設(shè)置顯示中文字體
mpl.rcParams["axes.unicode_minus"] = False # 設(shè)置正常顯示符號(hào)
# 數(shù)據(jù)準(zhǔn)備
x = range(24)
y = [random.uniform(13, 20) for i in x] # random.uniform():隨機(jī)生成13-20范圍內(nèi)的浮點(diǎn)數(shù)
plt.figure(figsize=(10, 5), dpi=80) # 創(chuàng)建畫(huà)布
plt.plot(x, y, color='y', linestyle='-',label='樟樹(shù)') # 繪制折線圖
x_ticks_label = ["{}:00".format(i) for i in x] # 構(gòu)建x軸刻度標(biāo)簽
y_ticks = range(40) # 構(gòu)建y軸刻度
# 修改x,y軸坐標(biāo)的刻度顯示
plt.xticks(x[::2], x_ticks_label[::2])
plt.yticks(y_ticks[10:20:1])
plt.grid(True, linestyle='-', alpha=0.9) # 添加網(wǎng)格
plt.legend(loc=0) # 顯示圖例
# 描述信息
plt.xlabel("時(shí)間")
plt.ylabel("溫度")
plt.title("24小時(shí)內(nèi)溫度變化圖", fontsize=18)
plt.savefig("./plot.jpg") # 保存至指定位置
plt.show() # 顯示圖像結(jié)果如下

二、散點(diǎn)圖
用兩組數(shù)據(jù)構(gòu)成多個(gè)坐標(biāo)點(diǎn),考察坐標(biāo)點(diǎn)的分布,判斷兩變量之間是否存在某種關(guān)聯(lián)或總結(jié)坐標(biāo)點(diǎn)的分布模式
特點(diǎn):判斷變量之間是否存在數(shù)量關(guān)聯(lián)趨勢(shì),展示離群點(diǎn)(分布規(guī)律)
函數(shù):plt.scatter(x, y)
import matplotlib.pyplot as plt
import random
# 數(shù)據(jù)準(zhǔn)備
x = range(100)
y = [random.uniform(13, 20) for i in x] # random.uniform():隨機(jī)生成13-20范圍內(nèi)的浮點(diǎn)數(shù)
plt.figure(figsize=(10, 5), dpi=80) # 創(chuàng)建畫(huà)布
plt.scatter(x, y, color='r', linestyle='-',label='樟樹(shù)') # 繪制折線圖
x_ticks_label = ["{}天".format(i) for i in x] # 構(gòu)建x軸刻度標(biāo)簽
y_ticks = range(25) # 構(gòu)建y軸刻度
# 修改x,y軸坐標(biāo)的刻度顯示
plt.xticks(x[::10], x_ticks_label[::10])
plt.yticks(y_ticks[10:22:2])
plt.grid(True, linestyle='-', alpha=0.9) # 添加網(wǎng)格
plt.legend(loc=0) # 顯示圖例
# 描述信息
plt.xlabel("時(shí)間/天")
plt.ylabel("溫度")
plt.title("24小時(shí)內(nèi)溫度變化圖", fontsize=18)
plt.savefig("./scatter.jpg") # 保存至指定位置
plt.show() # 顯示圖像結(jié)果如下

三、柱狀圖
排列在工作表的列或行中的數(shù)據(jù)可以繪制到柱狀圖中
特點(diǎn):繪制連離散的數(shù)據(jù),能夠一眼看出各個(gè)數(shù)據(jù)的大小,比較數(shù)據(jù)之間的差別(統(tǒng)計(jì)/對(duì)比)
函數(shù):plt.bar(x, width, align='center', **kwargs)
- x:需要傳遞的數(shù)據(jù)
- width:柱狀圖的寬度
- align:每個(gè)柱狀圖的位置對(duì)齊方式
- **kwargs
- color:選擇柱狀圖的顏色
import matplotlib.pyplot as plt
import random
# 數(shù)據(jù)準(zhǔn)備
x = range(0,10)
y = [random.randint(35, 45) for i in x] # random.uniform():隨機(jī)生成13-20范圍內(nèi)的浮點(diǎn)數(shù)
plt.figure(figsize=(10, 5), dpi=80) # 創(chuàng)建畫(huà)布
plt.bar(x, y, width=0.5, color=['b','r','g','y','c','m','y','k','c','g']) # 繪制折線圖
x_ticks_label = ["21{}班".format(i) for i in x] # 構(gòu)建x軸刻度標(biāo)簽
y_ticks = range(55) # 構(gòu)建y軸刻度
# 修改x,y軸坐標(biāo)的刻度顯示
plt.xticks(x[::1], x_ticks_label[::1])
plt.yticks(y_ticks[0:55:5])
plt.grid(True, linestyle=':', alpha=0.3) # 添加網(wǎng)格
# 描述信息
plt.xlabel("班級(jí)")
plt.ylabel("人數(shù)")
plt.title("2021級(jí)各班人數(shù)柱狀圖", fontsize=18)
plt.savefig("./bar.jpg") # 保存至指定位置
plt.show() # 顯示圖像結(jié)果如下

四、直方圖
由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況, 一般用橫軸表示數(shù)據(jù)范圍,縱軸表示分布情況
特點(diǎn):繪制連續(xù)性的數(shù)據(jù)展示一組或者多組數(shù)據(jù)的分布狀況(統(tǒng)計(jì))
函數(shù):matplotlib.pyplot.hist(x, bins=None)
- x:需要傳遞的數(shù)據(jù)
- bins:組距
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('_mpl-gallery')
# 生成數(shù)據(jù)
np.random.seed(1) # 隨機(jī)數(shù)種子,用于生成隨機(jī)數(shù)
x = 4 + np.random.normal(0, 1.5, 200)
# numpy.random.normal(loc=0.0, scale=1.0, size=None) 為一個(gè)正態(tài)分布
# loc(float):均值,對(duì)應(yīng)著這個(gè)分布的中心。loc=0說(shuō)明這一個(gè)以y軸為對(duì)稱軸的正態(tài)分布
# scale(float):標(biāo)準(zhǔn)差,對(duì)應(yīng)分布的寬度,scale越大越矮胖,scale越小,越瘦高
# size(int 或者整數(shù)元組):輸出的值賦在shape里,默認(rèn)為None
# plot:
fig, ax = plt.subplots()
ax.hist(x, bins=8, linewidth=0.5, edgecolor="white")
ax.set(xlim=(0, 10), xticks=np.arange(1, 10),
ylim=(0, 56), yticks=np.linspace(0, 56, 9)) # 9個(gè),包含0,間隔為7,7×8=56,即[0,7,14,21,28,35,42,49,56]
# np.arange():返回一個(gè)有終點(diǎn)和起點(diǎn)的固定步長(zhǎng)的排列
# np.linspace(start, stop, num):用來(lái)創(chuàng)建等差數(shù)列,num為個(gè)數(shù)
plt.show()結(jié)果如下

五、餅圖
用于表示不同分類的占比情況,通過(guò)弧度大小來(lái)對(duì)比各種分類
特點(diǎn):分類數(shù)據(jù)的占比情況(占比)
plt.pie(x, labels=,autopct=,colors)
- x:數(shù)量,自動(dòng)算百分比
- labels:每部分名稱
- autopct:占比顯示指定%1.2f%%
- colors:每部分顏色
- startangle:開(kāi)始繪制的角度
- shadow=True:陰影
import matplotlib.pyplot as plt
# 餅圖,其中切片將按逆時(shí)針順序排序和繪制:
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 20]
explode = (0, 0.1, 0, 0) # 僅分解第二個(gè)切片,間距為0.1
fig1, ax1 = plt.subplots()
ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.3f%%',colors=['r','y','c','g'],
shadow=True, startangle=90)
ax1.axis('equal') # 等長(zhǎng)寬比確保餅被畫(huà)成圓
plt.show()結(jié)果如下

Matplotlib官網(wǎng):https://matplotlib.org/stable/
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)同時(shí)調(diào)用多個(gè)GPT的API
這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)同時(shí)調(diào)用多個(gè)GPT的API,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09
通過(guò)實(shí)例解析Python return運(yùn)行原理
這篇文章主要介紹了通過(guò)實(shí)例解析Python return運(yùn)行原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
對(duì)python字典過(guò)濾條件的實(shí)例詳解
今天小編就為大家分享一篇對(duì)python字典過(guò)濾條件的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
numpy中np.append()函數(shù)用法小結(jié)
在numpy的函數(shù)庫(kù)中,np.append()函數(shù)是一個(gè)常用的數(shù)組操作函數(shù),它在進(jìn)行數(shù)組操作時(shí)能夠?qū)蓚€(gè)數(shù)組進(jìn)行拼接,并返回一個(gè)拼接后的新數(shù)組,下面就來(lái)介紹一下具體用法,感興趣的可以了解一下2023-11-11

