1. 程式人生 > >利用matplotlib繪製折線圖:CSV格式

利用matplotlib繪製折線圖:CSV格式

熬過初學階段的不適和挫敗感,我們其實完全可以掌握一個全新的領域。


本文為《python程式設計 從入門到實踐》(以下簡稱參考書》中第16章 下載資料中的內容,利用matplotlib繪製最高及最低氣溫折線圖。

在此整理為筆記,一為溫習,二為備份,以便日後再次學習,三也為網友提供學習資料。

注:本文程式碼均可直接複製到python文字編輯器中,在執行環境安裝完整的前提下均可直接執行。

認識CSV檔案頭

csv檔案是一以逗號分隔資料的檔案,可以用Excel、文字文件開啟。在此以參考書中的氣象資料為例進行介紹。

△記事本中csv檔案顯示形式

△Excel中csv檔案顯示形式

用python讀取csv檔案

注:檔名為weather_2014。csv檔案須與python檔案放置在同一資料夾。

1.新建highs_lows.py檔案
讀取csv檔案頭

import csv #匯入csv模組,該模組包含於python標準庫中

filename='weather_2014.csv' #檔名
with open(filename) as f: #開啟檔案檔案並將內容儲存在reader中
    reader=csv.reader(f) #讀取並將內容儲存在reader中
    header_row=next(reader)#next()函式獲取第一行,即檔案頭
print(header_row)

執行結果:

用索引顯示檔案頭

利用索引及索引值顯示檔案頭

import csv #匯入csv模組,該模組包含於python標準庫中

filename='weather_2014.csv' #檔名
with open(filename) as f: #開啟檔案檔案並將內容儲存在reader中
    reader=csv.reader(f) #讀取並將內容儲存在列表reader中
    header_row=next(reader)#next()函式獲取第一行,即檔案頭
    for index,content in enumerate(header_row):#函式enumerate()獲取每個元素索引及其值
print(index,content)

執行結果:

從上圖可以看出日期、最高氣溫、最低氣溫分別位於第0/1/3列。

程式

import csv #匯入csv模組,該模組包含於python標準庫中
from matplotlib import pyplot as plt #從matplotlib中匯入pyplot並重命名為plt
from datetime import datetime #匯入日期模組,用以轉換字元型日期為日期型

#從檔案中獲取數值
filename='weather_2014.csv' #檔名
with open(filename) as f: #開啟檔案檔案
    reader=csv.reader(f) #讀取並將內容儲存在列表reader中
    header_row=next(reader)#next()函式獲取第一行,即檔案頭

    #提取氣溫、日期資料儲存在列表中
    highs,lows,dates=[],[],[]  #將最高氣溫、最低氣溫、日期儲存在列表中
    for row in reader: #遍歷reader列表

        high=int(row[1]) #將字元型溫度轉換成數值型
        highs.append(high) #將最高氣溫附加到highs列表中

        low=int(row[3])#同上
        lows.append(low)

        current_date=datetime.strptime(row[0],'%Y-%m-%d')#將字元型日期轉換成日期型
        dates.append(current_date)

    #繪製氣溫圖表
    fig=plt.figure(dpi=128,figsize=(8,6))#新增繪圖視窗,可繪製多條曲線
    plt.plot(dates,highs,c='red',alpha=0.6)#plot()函式,第一個引數x值,第二個y值,第三個圖形顏色
    plt.plot(dates,lows,c='blue',alpha=0.6)

    #設定圖形的格式
    plt.title("Daily high and low tempratures-2014\nDeath Valley,CA",fontsize=24)#圖形標題
    plt.xlabel("Date",fontsize=14)#x軸標題及字號
    fig.autofmt_xdate()#呼叫fig.autofmt_xdate()繪製斜的日期標籤,以防日期彼此重疊
    plt.ylabel("Temperature(F)",fontsize=14)
    plt.tick_params(axis='both',which='major',labelsize=8)#座標軸格式

    #給圖表區域著色
    plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.1)
    """
    facecolor為填充區域顏色
    alpha為填充顏色的透明度,0表示完全透明,1表示完全不透明
    """

    #顯示圖表
    plt.show()

結果圖


上圖即為用上一節程式碼繪製的圖件。