Python可視化Matplotlib折線圖plot用法詳解
折線圖是數(shù)據(jù)分析中非常常用的圖形。其中,折線圖主要是以折線的上升或下降來(lái)表示統(tǒng)計(jì)數(shù)量的增減變化的統(tǒng)計(jì)圖。用于分析自變量和因變量之間的趨勢(shì)關(guān)系,最適合用于顯示隨著時(shí)間而變化的連續(xù)數(shù)據(jù),同時(shí)還可以看出數(shù)量的差異,增長(zhǎng)情況。
特點(diǎn):能夠顯示數(shù)據(jù)的變化趨勢(shì),反映事物的變化情況。
Matplotlib 中繪制折線圖的函數(shù)為 plot() ,使用語(yǔ)法如下:
matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
常用參數(shù)及說(shuō)明:
| 參數(shù) | 接收值 | 說(shuō)明 | 默認(rèn)值 |
|---|---|---|---|
| x,y | array | 表示 x 軸與 y 軸對(duì)應(yīng)的數(shù)據(jù) | 無(wú) |
| color | string | 表示折線的顏色 | None |
| marker | string | 表示折線上數(shù)據(jù)點(diǎn)處的類(lèi)型 | None |
| linestyle | string | 表示折線的類(lèi)型 | - |
| linewidth | 數(shù)值 | 線條粗細(xì):linewidth=1.=5.=0.3 | 1 |
| alpha | 0~1之間的小數(shù) | 表示點(diǎn)的透明度 | None |
| label | string | 數(shù)據(jù)圖例內(nèi)容:label=‘實(shí)際數(shù)據(jù)' | 1None |
1.完善原始折線圖 — 給圖形添加輔助功能
需求:畫(huà)出某城市11點(diǎn)到12點(diǎn)1小時(shí)內(nèi)每分鐘的溫度變化折線圖,溫度范圍在15度~25度
1.1 準(zhǔn)備數(shù)據(jù)并畫(huà)出初始折線圖
import matplotlib.pyplot as plt import random # 畫(huà)出溫度變化圖 # 0.準(zhǔn)備x, y坐標(biāo)的數(shù)據(jù) x = range(60) y_jiangsu = [random.uniform(15, 25) for i in x] # 1.創(chuàng)建畫(huà)布 plt.figure(figsize=(20, 8), dpi=80) # 2.繪制折線圖 plt.plot(x, y_jiangsu) # 3.顯示圖像 plt.show()
1.2 添加自定義x,y刻度
plt.xticks(x, **kwargs)
x:要顯示的刻度值
plt.yticks(y, **kwargs)
y:要顯示的刻度值
# 構(gòu)造x軸刻度標(biāo)簽
x_ticks_label = ["11點(diǎn){}分".format(i) for i in x]
# 構(gòu)造y軸刻度
y_ticks = range(40)
# 修改x,y軸坐標(biāo)的刻度顯示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])
1.3 中文顯示問(wèn)題解決
如果沒(méi)有解決過(guò)中文問(wèn)題的話,繪制的圖像會(huì)出現(xiàn)中文無(wú)法顯示的問(wèn)題。
解決方案:
在Python腳本中動(dòng)態(tài)設(shè)置matplotlibrc,這樣也可以避免由于更改配置文件而造成的麻煩,具體代碼如下:
from pylab import mpl # 設(shè)置顯示中文字體 mpl.rcParams["font.sans-serif"] = ["SimHei"]
有時(shí)候,字體更改后,會(huì)導(dǎo)致坐標(biāo)軸中的部分字符無(wú)法正常顯示,例如無(wú)法顯示負(fù)號(hào)問(wèn)題,此時(shí)需要更改axes.unicode_minus參數(shù):
# 設(shè)置正常顯示符號(hào) mpl.rcParams["axes.unicode_minus"] = False
1.4 添加網(wǎng)格顯示
為了更加清楚地觀察圖形對(duì)應(yīng)的值
plt.grid(True, linestyle='--', alpha=0.5)
1.5 添加描述信息
添加x軸、y軸描述信息及標(biāo)題
通過(guò)fontsize參數(shù)可以修改圖像中字體的大小
plt.xlabel("時(shí)間")
plt.ylabel("溫度")
plt.title("江蘇中午11點(diǎn)0分到12點(diǎn)之間的溫度變化圖示", fontsize=20)
1.6 圖像保存
# 保存圖片到指定路徑
plt.savefig("test.png")
注意:plt.show()會(huì)釋放figure資源,如果在顯示圖像之后保存圖片將只能保存空?qǐng)D片。

2. 在一個(gè)坐標(biāo)系中繪制多個(gè)圖像
2.1 多次plot
需求:再添加一個(gè)城市的溫度變化
收集到北京當(dāng)天溫度變化情況,溫度在1度到3度。怎么去添加另一個(gè)在同一坐標(biāo)系當(dāng)中的不同圖形,其實(shí)很簡(jiǎn)單只需要再次plot即可,但是需要區(qū)分線條。
# 增加北京的溫度數(shù)據(jù) y_beijing = [random.uniform(1, 3) for i in x] # 繪制折線圖 plt.plot(x, y_jiangsu) # 使用多次plot可以畫(huà)多個(gè)折線 plt.plot(x, y_beijing, color='r', linestyle='--')
2.2 顯示圖例
注意:如果只在plt.plot()中設(shè)置label還不能最終顯示出圖例,還需要通過(guò)plt.legend()將圖例顯示出來(lái)。
# 繪制折線圖 plt.plot(x, y_jiangsu, label="江蘇") # 使用多次plot可以畫(huà)多個(gè)折線 plt.plot(x, y_beijing, color='r', linestyle='--', label="北京") # 顯示圖例 plt.legend(loc="best")
完整代碼:
# 0.準(zhǔn)備數(shù)據(jù)
x = range(60)
y_jiangsu = [random.uniform(15, 25) for i in x]
y_beijing = [random.uniform(1,3) for i in x]
# 1.創(chuàng)建畫(huà)布
plt.figure(figsize=(20, 8), dpi=100)
# 2.繪制圖像
plt.plot(x, y_jiangsu, label="江蘇")
plt.plot(x, y_beijing, color="r", linestyle="--", label="北京")
# 2.1 添加x,y軸刻度
# 構(gòu)造x,y軸刻度標(biāo)簽
x_ticks_label = ["11點(diǎn){}分".format(i) for i in x]
y_ticks = range(35)
# 刻度顯示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# 2.2 添加網(wǎng)格顯示
plt.grid(True, linestyle="--", alpha=0.5)
# 2.3 添加描述信息
plt.xlabel("時(shí)間")
plt.ylabel("溫度")
plt.title("中午11點(diǎn)--12點(diǎn)某城市溫度變化圖", fontsize=20)
# 2.4 圖像保存
plt.savefig("./test.png")
# 2.5 添加圖例
plt.legend(loc="best")
# 3.圖像顯示
plt.show()

2.3 折線圖的應(yīng)用場(chǎng)景
- 呈現(xiàn)公司產(chǎn)品(不同區(qū)域)每天活躍用戶數(shù)
- 呈現(xiàn)app每天下載數(shù)量
- 呈現(xiàn)產(chǎn)品新功能上線后,用戶點(diǎn)擊次數(shù)隨時(shí)間的變化
創(chuàng)作不易,白嫖不好,各位的支持和認(rèn)可,就是我創(chuàng)作的最大動(dòng)力,我們下篇文章見(jiàn)!
Dragon少年 | 文
如果本篇博客有任何錯(cuò)誤,請(qǐng)批評(píng)指教,不勝感激 !
以上就是Python可視化Matplotlib折線圖plot用法詳解的詳細(xì)內(nèi)容,更多關(guān)于Python可視化Matplotlib的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python基于BeautifulSoup和requests實(shí)現(xiàn)的爬蟲(chóng)功能示例
這篇文章主要介紹了Python基于BeautifulSoup和requests實(shí)現(xiàn)的爬蟲(chóng)功能,結(jié)合實(shí)例形式分析了Python使用BeautifulSoup和requests庫(kù)爬取網(wǎng)站指定信息的相關(guān)操作技巧,需要的朋友可以參考下2019-08-08
簡(jiǎn)單了解Django項(xiàng)目應(yīng)用創(chuàng)建過(guò)程
這篇文章主要介紹了簡(jiǎn)單了解Django項(xiàng)目應(yīng)用創(chuàng)建過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Python 保持登錄狀態(tài)進(jìn)行接口測(cè)試的方法示例
這篇文章主要介紹了Python 保持登錄狀態(tài)進(jìn)行接口測(cè)試的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
巧妙使用python?opencv庫(kù)玩轉(zhuǎn)視頻幀率
這篇文章主要介紹了巧妙使用python?opencv庫(kù)玩轉(zhuǎn)視頻幀率的教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
python字典dict中常用內(nèi)置函數(shù)的使用
本文主要介紹了python字典dict中常用內(nèi)置函數(shù)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
使用 Python 實(shí)現(xiàn)微信消息的一鍵已讀的思路代碼
利用python可以實(shí)現(xiàn)微信消息的一鍵已讀功能,怎么實(shí)現(xiàn)呢?你肯定會(huì)想著很復(fù)雜,但是python的好處就是很多人已經(jīng)把接口打包做好了,只需要調(diào)用即可,今天通過(guò)本文給大家分享使用 Python 實(shí)現(xiàn)微信消息的一鍵已讀的思路代碼,一起看看吧2021-06-06
徹底弄懂Python中的回調(diào)函數(shù)(callback)
回調(diào)函數(shù)就是一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python中回調(diào)函數(shù)(callback)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
Flask SocketIO實(shí)現(xiàn)動(dòng)態(tài)繪圖的示例詳解
Flask-SocketIO 是基于 Flask 的一個(gè)擴(kuò)展,用于簡(jiǎn)化在 Flask 應(yīng)用中集成 WebSocket 功能,本文主要介紹了Flask SocketIO如何實(shí)現(xiàn)動(dòng)態(tài)繪圖,需要的可以參考下2023-11-11
python利用不到一百行代碼實(shí)現(xiàn)一個(gè)小siri
這篇文章主要介紹了關(guān)于python利用不到一百行代碼實(shí)現(xiàn)了一個(gè)小siri的相關(guān)資料,文中介紹的很詳細(xì),對(duì)大家具有一定的參考借鑒價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03

