python?用matplotlib繪制折線圖詳情
復(fù)習(xí)回顧:
眾所周知,matplotlib 是一款功能強(qiáng)大開源的數(shù)據(jù)可視化模塊,憑借著強(qiáng)大的擴(kuò)展性構(gòu)建出更高級(jí)別的繪圖工具接口如seaborn、ggplot。我們來看看往期學(xué)習(xí)章節(jié)內(nèi)容概述吧~
- matplotlib 模塊基礎(chǔ)知識(shí):對(duì)matplotlib模塊具有便利的交互新創(chuàng)建圖表、多種圖表定制以及強(qiáng)大的可擴(kuò)展性,matplotlib可滿足不同用戶的使用,初次體驗(yàn)繪制圖表功能
- matplotlib 模塊底層原理:matplotlib 模塊包含腳本層、美工層及后端層,對(duì)各個(gè)層相關(guān)提供的操作進(jìn)行學(xué)習(xí)
在 matplotlib 官網(wǎng)教程中,可以繪制諸如折線圖、柱狀圖、餅圖等常規(guī)圖外,還有可以繪制動(dòng)態(tài)圖、散點(diǎn)圖、等高線圖、帽子圖、多個(gè)子圖等

接下來,我們將繼續(xù)學(xué)習(xí)matplotlib 圖表繪制具體的功能實(shí)操,掌握針對(duì)不同圖表的繪制
1. 折線圖概述
1.1什么是折線圖?
- 折線圖是在坐標(biāo)中通過線條升降的方式展示隨著某種變化而變化的連續(xù)性數(shù)據(jù)
- 通過折線的起伏表示數(shù)據(jù)的增減變化的情況
- 折線圖可以拆分為動(dòng)態(tài)折線圖、依存關(guān)系折線圖和次數(shù)分布折線圖
1.2折線圖使用場(chǎng)景
折線圖自身的線條的變化,可以在圖表中清晰讀取到數(shù)據(jù)變化情況,可以運(yùn)用的場(chǎng)景特點(diǎn)如下
- 描繪統(tǒng)計(jì)事項(xiàng)總體指標(biāo)的動(dòng)態(tài)
- 研究對(duì)象間的依存關(guān)系
- 總體中各個(gè)部分的分配情況
- 適合大量數(shù)據(jù)展示其趨勢(shì)變化
1.3繪制折線圖步驟
- 導(dǎo)入
matplotlib.pyplot模塊 - 準(zhǔn)備數(shù)據(jù),可以使用
numpy/pandas整理數(shù)據(jù) - 調(diào)用
pyplot.plot()繪制折線圖
1.4案例展示
接下來我們使用折線圖來展示從 10份 所有文章訪問量數(shù)據(jù)展示
所有的案例用到的數(shù)據(jù)如下:
import random
x_data = ["10月{}日".format(i+1) for i in range(30)]
y_view = [random.randint(50,200) for i in range(30)]
展示10月份數(shù)據(jù)折線圖:
import matplotlib.pyplot as plt
import random
plt.rcParams["font.sans-serif"]=['SimHei']
plt.rcParams["axes.unicode_minus"]=False
x_data = ["10月{}日".format(i+1) for i in range(30)]
y_view = [random.randint(50,200) for i in range(30)]
plt.figure(figsize=(20,5),dpi=90)
plt.plot(x_data,y_view)
plt.xticks(rotation=45)
plt.title("訪問量分析")
plt.xlabel("日期")
plt.ylabel("訪問量")
plt.show()

2. 折線2D屬性
2.1linestyle:折線樣式
| 屬性值 | 說明 |
|---|---|
| "-" 、"solid" | 默認(rèn)實(shí)線顯示 |
| "--"、"dashed" | 虛線 |
| "-." "dashdot" | 點(diǎn)劃線 |
| ":"、"dotted" | 虛線 |
| "None" """" | 空 |
2.2color:折線顏色
顏色簡(jiǎn)稱:
| 屬性值 | 說明 | 屬性值 | 說明 |
|---|---|---|---|
| "b"/"bule" | 藍(lán)色 | "m"/"magenta" | 品紅 |
| "g" /"green" | 綠色 | "y"/"yellow" | 黃色 |
| "r"/"red" | 紅色 | "k"/"black" | 黑色 |
| "c"/"cyan" | 青色 | "w"/"white" | 白色 |
rgb
- 格式形式:(r,g,b) 或者(r,g,b,a)
- 取值范圍:r,g,b,a 取值范圍在[0,1]之間
- [0,1]之間的浮點(diǎn)數(shù)的字符串形式,0表示黑色,1表示白色
2.3marker:坐標(biāo)值標(biāo)記
- marker 標(biāo)記物通常在折線圖plot、散點(diǎn)圖scatter和誤差圖errorbar上應(yīng)用
- marker 提供多達(dá)40個(gè)標(biāo)記的樣式可供選擇,具體詳情看見marker官方說明
- marker 在圖表中常用的有如下:
| 屬性值 | 說明 | 屬性值 | 說明 |
|---|---|---|---|
| "o" | ??圓圈標(biāo)記 | "8" | 八邊形 |
| "v" | ??倒三角標(biāo)記 | "s" | ??正方形標(biāo)記 |
| "^" | ??正三角標(biāo)記 | "*" | ?星號(hào) |
| "<" | ??左三角標(biāo)記 | "+" | ?加號(hào) |
| ">" | ??右三角標(biāo)記 | "x" | X星星 |
| "1" | 向下Y標(biāo)記 | "D" | ??鉆石標(biāo)記 |
| "2" | 向上Y標(biāo)記 | " | " |
| "3" | 向左Y標(biāo)記 | "_" | _水平線標(biāo)記 |
| "4" | 向右Y標(biāo)記 | "p" | ?五角星標(biāo)記 |
- markeredgecolor:標(biāo)記邊界顏色
- markeredgewidth:標(biāo)記寬度
- markfacecorlor:標(biāo)記填充色
- markersize:標(biāo)記大小
2.4fillstyle:標(biāo)記填充方法
| 屬性值 | 說明 |
|---|---|
| "full" | 整個(gè)標(biāo)記 |
| "left" | 左邊標(biāo)記一半 |
| "right" | 右邊標(biāo)記一半 |
| "bottom" | 底部標(biāo)記一半 |
| "top" | 頂部標(biāo)記一半 |
| "none" | 無填充 |
2.5linewidth(lw): 直線寬度
對(duì)第一節(jié)案例添加直線屬性:虛線表示,坐標(biāo)用綠色左半填充圈標(biāo)記
# 直線屬性 plt.plot(x_data,y_view,linestyle="--" ,marker="o",markeredgecolor="g",fillstyle="left")

更多屬性:
在matplotlib官網(wǎng)對(duì)直線2D屬性有更多的介紹
3. 坐標(biāo)管理
3.1坐標(biāo)軸名字設(shè)置
- 設(shè)置X軸名稱:pyplot.xlabel(str)
- 設(shè)置y軸名稱:pyplot.ylabel(str)
3.2坐標(biāo)軸刻度設(shè)置
- x軸坐標(biāo)刻度設(shè)置:pyplot.xticks(ticks=[],rotation)
- y軸坐標(biāo)刻度設(shè)置:pyplot.yticks(ticks=[],rotation)
參數(shù)說明:
- ticks:列表類型,表示x軸范圍
- rotation:翻轉(zhuǎn)角度
3.3坐標(biāo)軸位置設(shè)置
- 坐標(biāo)軸位置設(shè)置需要通過pyplot.gca()先獲取當(dāng)前的Axes
- 然后調(diào)用ax.spines[].set_position()設(shè)置位置
- ax.spines['bottom'].set_position(('axes',0.5)) 表示將x軸設(shè)置在y軸50%處
3.4指定坐標(biāo)值標(biāo)注
pyplot.annotate() 展示指定坐標(biāo)點(diǎn)的(x,y)值
常用接口參數(shù)說明:
| 參數(shù) | 說明 |
|---|---|
| txt | 展示的文本 |
| xy | 注釋的(x,y) |
| xytext | xy展示的文本 |
| color | 展示的文本顏色 |
繼續(xù)改造第一節(jié)案例:標(biāo)記出最大訪問,y軸移到x軸中心
max_id = np.argmax(y_view)
show_max = '['+str(x_data[max_id])+','+str(y_view[max_id])+']'
plt.figure(figsize=(20,5),dpi=90)
ax= plt.gca()
ax.spines["left"].set_position(('axes',0.5))
plt.plot(x_data,y_view,linestyle="--",marker="o",markeredgecolor="g",fillstyle="left")
plt.xticks(ticks=np.arange(0,30),rotation=60)
plt.annotate(show_max, xy=(x_data[max_id],y_view[max_id] ), xytext=(x_data[max_id],y_view[max_id]), color='r')

4. 多條折線展示圖
在一個(gè)圖表中,我們可以多次調(diào)用plot()繪制多條折線展示在同一個(gè)表格中
```python star_view = [random.randint(100,200) for i in range(30)] plt.plot(x_data,y_view,linestyle="--",marker="o",markeredgecolor="g",fillstyle="left") plt.plot(x_data,star_view,linestyle="-",marker="s",markeredgecolor="r",fillstyle="right") ```

5. 圖列管理
當(dāng)一個(gè)圖表中存在多個(gè)折線圖時(shí),我們需要使用圖例管理來對(duì)每個(gè)折線代表對(duì)象
- pyplot.legend(loc): 對(duì)圖表中折線進(jìn)行說明
- loc參數(shù)屬性值:
| 屬性 | 代碼 | 屬性 | 代碼 |
|---|---|---|---|
| 'best' | 0 | 'right' | 5 |
| 'upper right' | 1 | 'center left' | 6 |
| 'upper left' | 2 | 'center right' | 7 |
| 'lower left' | 3 | 'lower center' | 8 |
| 'lower right' | 4 | 'upper center' | 9 |
| 'center' | 10 |
label屬性,注釋每條折線的對(duì)象
plt.plot(x_data,y_view,linestyle="--",marker="o",markeredgecolor="g",fillstyle="left",label="all") plt.plot(x_data,star_view,linestyle="-",marker="s",markeredgecolor="r",fillstyle="right",label="star") plt.legend()

總結(jié):
本文?我們對(duì)matplotlib 模塊 折線圖plot()相關(guān)方法和屬性進(jìn)行,大家在平時(shí)工作中可以多多實(shí)踐,折線圖還是用的比較多的
到此這篇關(guān)于python 用matplotlib繪制折線圖詳情的文章就介紹到這了,更多相關(guān)python matplotlib繪制折線圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python連接SQLite數(shù)據(jù)庫的操作步驟
SQLite是一種輕量級(jí)的嵌入式數(shù)據(jù)庫,廣泛應(yīng)用于各種應(yīng)用程序中,Python提供了內(nèi)置的sqlite3模塊,使得連接和操作SQLite數(shù)據(jù)庫變得非常簡(jiǎn)單,本文給大家介紹了使用Python連接SQLite數(shù)據(jù)庫的操作步驟,需要的朋友可以參考下2024-12-12
python Canny邊緣檢測(cè)算法的實(shí)現(xiàn)
這篇文章主要介紹了python Canny邊緣檢測(cè)算法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
python?numpy?中l(wèi)inspace函數(shù)示例詳解
這篇文章主要介紹了python?numpy?中l(wèi)inspace函數(shù),本文我們通過示例學(xué)習(xí)了linspace函數(shù),如果你熟悉NumPy,一定也注意到還有np.arange函數(shù),兩者最大差異是,linspace能夠精確控制終止值終值,而arange能夠更直接地控制序列中值之間的增量,需要的朋友可以參考下2023-03-03
人工智能最火編程語言 Python大戰(zhàn)Java!
開發(fā)者到底應(yīng)該學(xué)習(xí)哪種編程語言才能獲得機(jī)器學(xué)習(xí)或數(shù)據(jù)科學(xué)這類工作呢?這是一個(gè)非常重要的問題。本文為大家提供作者的答案并解釋原因2017-11-11
Python PyQt5實(shí)戰(zhàn)項(xiàng)目之查詢器的實(shí)現(xiàn)流程詳解
PyQt5以一套Python模塊的形式來實(shí)現(xiàn)功能。它包含了超過620個(gè)類,600個(gè)方法和函數(shù)。它是一個(gè)多平臺(tái)的工具套件,它可以運(yùn)行在所有的主流操作系統(tǒng)中,包含Unix,Windows和Mac OS。PyQt5采用雙重許可模式。開發(fā)者可以在GPL和社區(qū)授權(quán)之間選擇2021-11-11
media配置及把用戶頭像從數(shù)據(jù)庫展示到前端的操作方法
media配置可以讓用戶上傳的所有文件都固定的存放在某一個(gè)指定的文件夾下,接下來通過本文給大家介紹下media配置及把用戶頭像從數(shù)據(jù)庫展示到前端的操作,需要的朋友可以參考下2022-09-09
django js實(shí)現(xiàn)部分頁面刷新的示例代碼
今天小編就為大家分享一篇django js實(shí)現(xiàn)部分頁面刷新的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05

