Python可視化Matplotlib折線圖plot用法詳解
折線圖是數(shù)據(jù)分析中非常常用的圖形。其中,折線圖主要是以折線的上升或下降來表示統(tǒng)計數(shù)量的增減變化的統(tǒng)計圖。用于分析自變量和因變量之間的趨勢關(guān)系,最適合用于顯示隨著時間而變化的連續(xù)數(shù)據(jù),同時還可以看出數(shù)量的差異,增長情況。
特點(diǎn):能夠顯示數(shù)據(jù)的變化趨勢,反映事物的變化情況。
Matplotlib 中繪制折線圖的函數(shù)為 plot() ,使用語法如下:
matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
常用參數(shù)及說明:
參數(shù) | 接收值 | 說明 | 默認(rèn)值 |
---|---|---|---|
x,y | array | 表示 x 軸與 y 軸對應(yīng)的數(shù)據(jù) | 無 |
color | string | 表示折線的顏色 | None |
marker | string | 表示折線上數(shù)據(jù)點(diǎn)處的類型 | None |
linestyle | string | 表示折線的類型 | - |
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.完善原始折線圖 — 給圖形添加輔助功能
需求:畫出某城市11點(diǎn)到12點(diǎn)1小時內(nèi)每分鐘的溫度變化折線圖,溫度范圍在15度~25度
1.1 準(zhǔn)備數(shù)據(jù)并畫出初始折線圖
import matplotlib.pyplot as plt import random # 畫出溫度變化圖 # 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)建畫布 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 中文顯示問題解決
如果沒有解決過中文問題的話,繪制的圖像會出現(xiàn)中文無法顯示的問題。
解決方案:
在Python腳本中動態(tài)設(shè)置matplotlibrc,這樣也可以避免由于更改配置文件而造成的麻煩,具體代碼如下:
from pylab import mpl # 設(shè)置顯示中文字體 mpl.rcParams["font.sans-serif"] = ["SimHei"]
有時候,字體更改后,會導(dǎo)致坐標(biāo)軸中的部分字符無法正常顯示,例如無法顯示負(fù)號問題,此時需要更改axes.unicode_minus參數(shù):
# 設(shè)置正常顯示符號 mpl.rcParams["axes.unicode_minus"] = False
1.4 添加網(wǎng)格顯示
為了更加清楚地觀察圖形對應(yīng)的值
plt.grid(True, linestyle='--', alpha=0.5)
1.5 添加描述信息
添加x軸、y軸描述信息及標(biāo)題
通過fontsize參數(shù)可以修改圖像中字體的大小
plt.xlabel("時間") plt.ylabel("溫度") plt.title("江蘇中午11點(diǎn)0分到12點(diǎn)之間的溫度變化圖示", fontsize=20)
1.6 圖像保存
# 保存圖片到指定路徑 plt.savefig("test.png")
注意:plt.show()會釋放figure資源,如果在顯示圖像之后保存圖片將只能保存空圖片。
2. 在一個坐標(biāo)系中繪制多個圖像
2.1 多次plot
需求:再添加一個城市的溫度變化
收集到北京當(dāng)天溫度變化情況,溫度在1度到3度。怎么去添加另一個在同一坐標(biāo)系當(dāng)中的不同圖形,其實(shí)很簡單只需要再次plot即可,但是需要區(qū)分線條。
# 增加北京的溫度數(shù)據(jù) y_beijing = [random.uniform(1, 3) for i in x] # 繪制折線圖 plt.plot(x, y_jiangsu) # 使用多次plot可以畫多個折線 plt.plot(x, y_beijing, color='r', linestyle='--')
2.2 顯示圖例
注意:如果只在plt.plot()中設(shè)置label還不能最終顯示出圖例,還需要通過plt.legend()將圖例顯示出來。
# 繪制折線圖 plt.plot(x, y_jiangsu, label="江蘇") # 使用多次plot可以畫多個折線 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)建畫布 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("時間") 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)用場景
- 呈現(xiàn)公司產(chǎn)品(不同區(qū)域)每天活躍用戶數(shù)
- 呈現(xiàn)app每天下載數(shù)量
- 呈現(xiàn)產(chǎn)品新功能上線后,用戶點(diǎn)擊次數(shù)隨時間的變化
創(chuàng)作不易,白嫖不好,各位的支持和認(rèn)可,就是我創(chuàng)作的最大動力,我們下篇文章見!
Dragon少年 | 文
如果本篇博客有任何錯誤,請批評指教,不勝感激 !
以上就是Python可視化Matplotlib折線圖plot用法詳解的詳細(xì)內(nèi)容,更多關(guān)于Python可視化Matplotlib的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
對python中使用requests模塊參數(shù)編碼的不同處理方法
今天小編就為大家分享一篇對python中使用requests模塊參數(shù)編碼的不同處理方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05Python使用asyncio異步時的常見問題總結(jié)
這篇文章主要為大家整理了開發(fā)人員在?Python?中使用?asyncio?時提出的常見問題以及解決方法,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下2023-04-04pytorch tensor int型除法出現(xiàn)的問題
這篇文章主要介紹了pytorch tensor int型除法出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04對Django中的權(quán)限和分組管理實(shí)例講解
今天小編就為大家分享一篇對Django中的權(quán)限和分組管理實(shí)例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python實(shí)現(xiàn)vlog生成器的示例代碼
vlog,全稱為Video?blog,意為影音博客,也有翻譯為微錄。本文將嘗試用Python基于Moviepy從一個文本文件中自動生成一個視頻格式的vlog,感興趣的可以了解一下2023-01-01在python中利用try..except來代替if..else的用法
今天小編就為大家分享一篇在python中利用try..except來代替if..else的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12