python 用matplotlib繪制折線圖詳情

復習回顧:
眾所周知,matplotlib 是一款功能強大開源的數據可視化模塊,憑借著強大的擴展性構建出更高級別的繪圖工具接口如seaborn、ggplot。我們來看看往期學習章節內容概述吧~

  • matplotlib 模塊基礎知識:對matplotlib模塊具有便利的交互新創建圖表、多種圖表定制以及強大的可擴展性,matplotlib可滿足不同用戶的使用,初次體驗繪制圖表功能
  • matplotlib 模塊底層原理:matplotlib 模塊包含腳本層、美工層及後端層,對各個層相關提供的操作進行學習

在 matplotlib 官網教程中,可以繪制諸如折線圖、柱狀圖、餅圖等常規圖外,還有可以繪制動態圖、散點圖、等高線圖、帽子圖、多個子圖等

接下來,我們將繼續學習matplotlib 圖表繪制具體的功能實操,掌握針對不同圖表的繪制

1. 折線圖概述

1.1什麼是折線圖?

  • 折線圖是在坐標中通過線條升降的方式展示隨著某種變化而變化的連續性數據
  • 通過折線的起伏表示數據的增減變化的情況
  • 折線圖可以拆分為動態折線圖、依存關系折線圖和次數分佈折線圖

1.2折線圖使用場景

折線圖自身的線條的變化,可以在圖表中清晰讀取到數據變化情況,可以運用的場景特點如下

  • 描繪統計事項總體指標的動態
  • 研究對象間的依存關系
  • 總體中各個部分的分配情況
  • 適合大量數據展示其趨勢變化

1.3繪制折線圖步驟

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

1.4案例展示

接下來我們使用折線圖來展示從 10份 所有文章訪問量數據展示

所有的案例用到的數據如下:

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月份數據折線圖:

  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” 默認實線顯示
“–“、”dashed” 虛線
“-.” “dashdot” 點劃線
“:”、”dotted” 虛線
“None” “”””

2.2color:折線顏色

顏色簡稱:

屬性值 說明 屬性值 說明
“b”/”bule” 藍色 “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]之間的浮點數的字符串形式,0表示黑色,1表示白色

2.3marker:坐標值標記

  • marker 標記物通常在折線圖plot、散點圖scatter和誤差圖errorbar上應用
  • marker 提供多達40個標記的樣式可供選擇,具體詳情看見marker官方說明
  • marker 在圖表中常用的有如下:
屬性值 說明 屬性值 說明
“o” ⏺️圓圈標記 “8” 八邊形
“v” 🔽倒三角標記 “s” ⏹️正方形標記
“^” 🔼正三角標記 “*” ⭐星號
“<“ ◀️左三角標記 “+” ➕加號
“>” ▶️右三角標記 “x” X星星
“1” 向下Y標記 “D” 🔷鉆石標記
“2” 向上Y標記
“3” 向左Y標記 “_” _水平線標記
“4” 向右Y標記 “p” ⭐五角星標記
標記還提供其他方法
  • markeredgecolor:標記邊界顏色
  • markeredgewidth:標記寬度
  • markfacecorlor:標記填充色
  • markersize:標記大小

2.4fillstyle:標記填充方法

屬性值 說明
“full” 整個標記
“left” 左邊標記一半
“right” 右邊標記一半
“bottom” 底部標記一半
“top” 頂部標記一半
“none” 無填充

2.5linewidth(lw): 直線寬度

對第一節案例添加直線屬性:虛線表示,坐標用綠色左半填充圈標記

#

 直線屬性
plt.plot(x_data,y_view,linestyle="--"
,marker="o",markeredgecolor="g",fillstyle="left")

更多屬性:
在matplotlib官網對直線2D屬性有更多的介紹

3. 坐標管理

3.1坐標軸名字設置

  • 設置X軸名稱:pyplot.xlabel(str)
  • 設置y軸名稱:pyplot.ylabel(str)

3.2坐標軸刻度設置

  • x軸坐標刻度設置:pyplot.xticks(ticks=[],rotation)
  • y軸坐標刻度設置:pyplot.yticks(ticks=[],rotation)

參數說明:

  • ticks:列表類型,表示x軸范圍
  • rotation:翻轉角度

3.3坐標軸位置設置

  • 坐標軸位置設置需要通過pyplot.gca()先獲取當前的Axes
  • 然後調用ax.spines[].set_position()設置位置
  • ax.spines[‘bottom’].set_position((‘axes’,0.5)) 表示將x軸設置在y軸50%處

3.4指定坐標值標註

pyplot.annotate() 展示指定坐標點的(x,y)值

用接口參數說明:

參數 說明
txt 展示的文本
xy 註釋的(x,y)
xytext xy展示的文本
color 展示的文本顏色

繼續改造第一節案例:標記出最大訪問,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. 多條折線展示圖

在一個圖表中,我們可以多次調用plot()繪制多條折線展示在同一個表格中

 ```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. 圖列管理

當一個圖表中存在多個折線圖時,我們需要使用圖例管理來對每個折線代表對象

  1. pyplot.legend(loc): 對圖表中折線進行說明
  2. loc參數屬性值:
屬性 代碼 屬性 代碼
‘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屬性,註釋每條折線的對象

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()

總結:
本文 我們對matplotlib 模塊 折線圖plot()相關方法和屬性進行,大傢在平時工作中可以多多實踐,折線圖還是用的比較多的

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

推薦閱讀: