在上一期的推送中,舉了一個很簡單的線形圖例子——繪製sin和cos曲線。在這一期,我們將系統地講解線形圖和散點圖的畫法。
同樣地,會在結尾放一個詳細的Python畫圖實戰案例哦,喜歡的小夥伴請收藏、轉發、關注吧!
在所有圖形中,最基本的應該就是線性方程y=f(x)的可視化了。
在Python腳本中繪製線形圖,我們首先需要進行一系列基礎操作——調用程序包、設置繪圖樣式、創建圖形和坐標軸。此外,根據需要設置圖形標籤和圖例,並記住在腳本末尾顯示圖形(plt.show)。
註:小夥伴們也可以直接複製上期推送結尾的案例,這個案例的主要用途是作為今後畫圖的模板。
1. x = np.linspace(0, 12, 121)
2. plt.plot(x, np.sin(x))
其中,plt.plot()函數的括號中有兩項,第一項是線性方程y=f(x)中的「x」,第二項是f(x)的方程,這個方程的代碼寫法通常與程序包Numpy有關。
在方程比較複雜、或方程比較長的情況下,也可以用定義f(x)的方法,如下:
1. x = np.linspace(0, 12, 121)
2. y = np.sin(x)
3. plt.plot(x, y)
兩種代碼繪製線形圖的結果相同:
簡單介紹完如何使用plt.plot()函數,我們再來講一下如何定義x,這與plt.plot()的原理有關。plt.plot()的原理類似於微元法,是繪製一系列該方程曲線上的點,再用圓滑的曲線將這些點連接。
其中,函數np.linspace()是等差數列函數,np.linspace(a,b,c)的含義是在[a,b]區間上,取均勻地取間隔相等的c個點。因此在上一個例子中,[0,12]是圖片中x的定義域,x每增長1,曲線上就增加10個點。c值應選取合適的值,過小的c值會使線形圖變成折線,過大的c會增大系統運算量。下圖為不同c值的繪圖效果。
可以通過在plt.plot()函數中設置參數來改變線條的顏色與風格。要修改顏色,也可以用color參數,它支持各種顏色的字符串。顏色的不同表示方法如下所示:
1. # 設置線條的顏色與風格
2. # 標準顏色名稱
3. plt.plot(x, np.sin(x - 0), color = 'blue')
4. # 縮寫顏色代碼(rgbcmyk)
5. plt.plot(x, np.sin(x - 1), color = 'g')
6. # 範圍在0-1的灰度值
7. plt.plot(x, np.sin(x - 2), color = '0.75')
8. # 十六進位(RRGGBB,00-FF)
9. plt.plot(x, np.sin(x - 3), color = '#FFDD44')
10.# GRB元組,範圍在0-1
11.plt.plot(x, np.sin(x - 4), color = (1.0, 0.2, 0.3))
12.# HTML顏色名稱
13.plt.plot(x, np.sin(x - 5), color = 'chartreuse')
如果不指定顏色,Matplotlib就會為多條線自動循環使用一組默認的顏色。
與顏色的調整類似,也可以用linestyle調整線條的風格。
1. # 設置線條的風格
2. plt.plot(x, x + 0, linestyle = '-') # 實線
3. plt.plot(x, x + 1, linestyle = '--') # 虛線
4. plt.plot(x, x + 2, linestyle = '-.') # 點劃線
5. plt.plot(x, x + 3, linestyle = ':') # 實點線
可以用一種更簡潔的方式,將color與linestyle編碼組合起來,作為plt.plot()函數中的一個非關鍵字參數使用。
1. # 設置線條的顏色與風格
2. plt.plot(x, x + 0, '-g') # 綠色實線
3. plt.plot(x, x + 1, '--c') # 青色虛線
4. plt.plot(x, x + 2, '-.k') # 黑色點劃線
5. plt.plot(x, x + 3, ':r') # 紅色實點線
經過上述繪製線形圖的講解,相信聰明的小夥伴已經掌握畫線形圖的基本技巧了。所以今天的案例難度升級,實用性也更為強大。
案例包含了很多新的知識點:
調整線條的寬度。
話不多說,代碼奉上:
1. # 調用包
2. import matplotlib as mpl
3. import matplotlib.pyplot as plt
4. import pandas as pd
5.
6. # 用Pandas讀取csv格式的文件
7. sj = pd.read_csv('BMpl.csv')
8.
9. # 提取文件中的數據
10.x = sj['DATE']
11.BB = sj['B-B']
12.BM = sj['B-M']
13.MB = sj['M-B']
14.
15.# 創建圖像
16.fig = plt.figure()
17.
18.# 繪製累計頻率曲線
19.plt.plot(x,BB,'-k',linewidth = 1)
20.plt.plot(x,BM,'--k',linewidth = 1)
21.plt.plot(x,MB,':k',linewidth = 1)
22.
23.# 設置題目與坐標軸名稱
24.plt.title('cumulative frequency curve chart')
25.plt.ylabel('Cumulative frequency curve')
26.plt.xlabel('Time(min)')
27.
28.# 設置圖例(置於右下方)
29.plt.legend(loc='lower right')
30.
31.# 顯示圖片
32.plt.show()
文件『BMpl.csv』中儲存的數據樣例。(三組累計頻率曲線)
以上就是本期繪製線形圖的全部內容啦!後面的幾期會繼續更新其他常用圖表的畫法,和交通學子常用的畫圖代碼。歡迎有需要的小夥伴關注、收藏、轉發吧~
如果覺得還不錯
點這裡!👇👇👇