highs_lows.py
帶注釋進(jìn)行解釋
#導(dǎo)入python標(biāo)準(zhǔn)庫(kù)內(nèi)的CSV模塊,用來(lái)處理CSV格式的文件,
import csv
#導(dǎo)入matplotlib包里面的pyplot模塊,用于可視化界面的搭建
from matplotlib import pyplot as plt
from datetime import datetime
#把天氣數(shù)據(jù)和源文件放一個(gè)文件夾里,并讀取death_valley_2014.csv
filename = 'death_valley_2014.csv'
#打開(kāi)CSV文件,實(shí)例化一個(gè)CSV模塊的reader閱讀器對(duì)象
with open(filename) as f:
reader = csv.reader(f)
#返回第一行的內(nèi)容,給header row
header_row = next(reader)
# print(header_row)
dates,highs,lows=[],[],[]#提前生產(chǎn)三個(gè)空列表,分別用來(lái)儲(chǔ)存日期、最高氣溫、最低氣溫
for row in reader:#遍歷閱讀器獲得的數(shù)據(jù),一行一行的提取出來(lái)
try:#嘗試操作
current_date = datetime.strptime(row[0],"%Y-%m-%d")#給取出來(lái)的數(shù)據(jù)第一列提取,并格式化為年-月-日
high = int(row[1])#給取出來(lái)的數(shù)據(jù)第二列提取,把格式化為整數(shù)型
low = int(row[3])#給取出來(lái)的數(shù)據(jù)第4列提取,把格式化為整數(shù)型
except ValueError:#當(dāng)提取所需要數(shù)據(jù)報(bào)錯(cuò)時(shí),的處理辦法
print(current_date,'missing data')
else:#如提取數(shù)據(jù)為報(bào)錯(cuò),則按照以下方式執(zhí)行
dates.append(current_date)#把取得的日期數(shù)據(jù)添加到dates的列表中
highs.append(high)#把取得的最高氣溫?cái)?shù)據(jù)添加到highs的列表中
lows.append(low)#把取得的最低氣溫?cái)?shù)據(jù)添加到lows的列表中
#print(highs)
#設(shè)備屏幕分辨率DPI為128像素/英寸,屏幕比例10比6
fig = plt.figure(dpi = 128,figsize=(10,6))
#屏幕中橫軸用時(shí)間、縱軸用最高氣溫,并用紅色,透明度50%,alpha為0,完全透明,alpha為1,完全不透明,
plt.plot(dates,highs,c='red',alpha=0.5)
#屏幕中橫軸用時(shí)間、縱軸用最高氣溫,并用藍(lán)色,透明度50%
plt.plot(dates,lows,c='blue',alpha=0.5)
#fill_between方法接收一個(gè)X值、兩個(gè)Y值,在兩個(gè)Y值之間采用facecolor的藍(lán)色填充,透明度50%
plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.1)
#可視化圖標(biāo)標(biāo)題為“Daily high and low temperature,- 2014”,字體大小24號(hào)字號(hào)
plt.title('Daily high and low temperature,- 2014',fontsize=24)
#可視化X軸標(biāo)題為空,字體大小16號(hào)字號(hào)
plt.xlabel('',fontsize=16)
#調(diào)用fig.autofmt_xdate繪制傾斜的日期標(biāo)簽,避免日期顯示時(shí)候重疊
fig.autofmt_xdate()
#可視化Y軸標(biāo)題為‘Temperature (F)’,字體大小16號(hào)字號(hào)
plt.ylabel('Temperature (F)',fontsize = 16)
#tick_params設(shè)置刻度的樣式,axis代表實(shí)參X Y軸的刻度,both代表X Y軸都影響,which一共有三個(gè)參數(shù)major主刻度、minor次刻度、both主次刻度都顯示,labelsize標(biāo)簽尺寸大小
plt.tick_params(axis='both',which='major',labelsize=16)
#生成可視化圖標(biāo)
plt.show()
輸出時(shí)提示如下:

image.png