先前,我們已經介紹過 matplotlib 第三方繪圖庫的基本操作方法。
這裡,我們将介紹如何通過讀取檔案中的資料來繪制其圖像的操作方法。
基本繪制方法
假設要繪制的資料存儲在名為 sample.txt 的檔案中,如下所示:
sample.txt 存儲資料内容
1 import matplotlib.pyplot as plt 2 3 X, Y = [], [] 4 for line in open('sample.txt', 'r'): 5 values = [float(s) for s in line.split()] 6 X.append(values[0]) 7 Y.append(values[1]) 8 9 plt.plot(X, Y)10 plt.show()
上述代碼:
#4 隻讀方式打開檔案,以行為機關讀取。
#5 分離每行資料并存儲在清單中,其中 split 函數調用格式如下:
str.split(str="", num=string.count(str))
參數:
str -- 分隔符,預設為所有的空字元,包括空格、換行()、制表符()等。
num -- 分割次數,預設為 -1, 即分隔所有。
傳回值:
傳回分割後的字元串清單。
#6 存儲分離得到的 X 坐标資料。
#7 存儲分離得到的 Y 坐标資料。
sample.txt 檔案資料繪制圖像
上述操作是基于 Python 基本方法進行讀取檔案資料和繪制圖像的。事實上,這樣做無法處理一些可能出現的錯誤現象,從程式設計角度來看,是不嚴謹的。此外,matplotlib 還通常與 numpy 進行結合使用,進行處理用于繪制圖像的資料源。
改良繪制方法
1 import numpy2 import matplotlib.pyplot as plot3 4 data = numpy.loadtxt('sample.txt')5 6 plot.plot(data[:,0], data[:,1])7 plot.show()
上述代碼:
#4 numpy.loadtxt( )函數讀取檔案後,傳回的是一個二維數組,類型上是矩陣。這就有利于我們能夠友善地通過矩陣行、列的概念來分别獲得 x、y 坐标的數值(#6 (data[:,0], data[:,1]))。
相較前面,上述代碼更加簡潔,而且,運用 numpy 後還能夠快速處理大型資料檔案,并且可以支援其它資料檔案格式(諸如 CSV、matlab 等)。
此外,上述代碼還可以支援類似如下情況中的多條曲線繪制任務:
比如,當檔案中包含有 N 列資料時,即繪制 N-1 條曲線。第一列即為 x 坐标數值,第二列即為第一條曲線的 y 坐标數值;第三列即為第二條曲線的 y 坐标數值;以此類推……
示例:
假設此時資料檔案中包含如下内容:
sample.txt 資料檔案存儲内容
1 import numpy2 import matplotlib.pyplot as plot3 4 data = numpy.loadtxt('sample.txt')5 6 for column in data.T:7 plot.plot(data[:,0], column)8 9 plot.show()
上述代碼:
#6 通過 data.T 矩陣轉置(列→行)後讀取的“行”即為原始矩陣的“列”。
#7 繪制多條曲線。
多條曲線繪制
小結:
本文介紹了如何用存儲在檔案中的資料直接繪制其圖像的操作方法。在實際運用中,絕大多數繪制圖像的資料源都是存儲在某種格式的檔案中。是以,學會上述圖像繪制方法後,将有利于我們發揮其實際效用,特别是對于大型資料源。
歡迎大家關注交流,一起讨論學習!