2019-01-02

highs_lows.py
带注释进行解释

#导入python标准库内的CSV模块,用来处理CSV格式的文件,
import csv
#导入matplotlib包里面的pyplot模块,用于可视化界面的搭建
from matplotlib import pyplot as plt
from datetime import datetime

#把天气数据和源文件放一个文件夹里,并读取death_valley_2014.csv
filename = 'death_valley_2014.csv'
#打开CSV文件,实例化一个CSV模块的reader阅读器对象
with open(filename) as f:
    reader = csv.reader(f)
    #返回第一行的内容,给header row
    header_row = next(reader)

#    print(header_row)

    dates,highs,lows=[],[],[]#提前生产三个空列表,分别用来储存日期、最高气温、最低气温
    for row in reader:#遍历阅读器获得的数据,一行一行的提取出来
        try:#尝试操作
            current_date = datetime.strptime(row[0],"%Y-%m-%d")#给取出来的数据第一列提取,并格式化为年-月-日
            high = int(row[1])#给取出来的数据第二列提取,把格式化为整数型
            low = int(row[3])#给取出来的数据第4列提取,把格式化为整数型
        except ValueError:#当提取所需要数据报错时,的处理办法
            print(current_date,'missing data')
        else:#如提取数据为报错,则按照以下方式执行
            dates.append(current_date)#把取得的日期数据添加到dates的列表中
            highs.append(high)#把取得的最高气温数据添加到highs的列表中
            lows.append(low)#把取得的最低气温数据添加到lows的列表中


    #print(highs)
#设备屏幕分辨率DPI为128像素/英寸,屏幕比例10比6
fig = plt.figure(dpi = 128,figsize=(10,6))
#屏幕中横轴用时间、纵轴用最高气温,并用红色,透明度50%,alpha为0,完全透明,alpha为1,完全不透明,
plt.plot(dates,highs,c='red',alpha=0.5)
#屏幕中横轴用时间、纵轴用最高气温,并用蓝色,透明度50%
plt.plot(dates,lows,c='blue',alpha=0.5)
#fill_between方法接收一个X值、两个Y值,在两个Y值之间采用facecolor的蓝色填充,透明度50%
plt.fill_between(dates,highs,lows,facecolor='blue',alpha=0.1)
#可视化图标标题为“Daily high and low temperature,- 2014”,字体大小24号字号
plt.title('Daily high and low temperature,- 2014',fontsize=24)
#可视化X轴标题为空,字体大小16号字号
plt.xlabel('',fontsize=16)
#调用fig.autofmt_xdate绘制倾斜的日期标签,避免日期显示时候重叠
fig.autofmt_xdate()
#可视化Y轴标题为‘Temperature (F)’,字体大小16号字号
plt.ylabel('Temperature (F)',fontsize = 16)
#tick_params设置刻度的样式,axis代表实参X Y轴的刻度,both代表X Y轴都影响,which一共有三个参数major主刻度、minor次刻度、both主次刻度都显示,labelsize标签尺寸大小
plt.tick_params(axis='both',which='major',labelsize=16)
#生成可视化图标
plt.show()

输出时提示如下:


image.png

你可能感兴趣的:(2019-01-02)