# incoding=gbk import csv from datetime import datetime from matplotlib import pyplot as plt # 从文件中获取日期、最高气温和最低气温 filename = ‘sitka_weather_2018_full.csv‘ with open(filename) as f: """ 调用csv.reader(),并将前面存储的文件对象作为实参传递给它,从而创建一个与该 文件相关联的阅读器(reader)对象。我们将这个阅读器对象存储在reader中。 模块csv包含函数next(),调用它并将阅读器对象传递给它时,它将返回文件中的下一行。 """ reader = csv.reader(f) header_row = next(reader) # print(header_row) for index, column_header in enumerate(header_row): print(index, column_header) dates, highs, lows = [], [], [] for row in reader: """错误检查,使用try-except-else代码块来处理数据缺失的问题""" try: """ 方法strptime(),将包含所需日期的字符串作为第一个实参,第二个实参告诉 Python如何设置日期的格式 %A 星期的名称,如Monday,大写全称,小写简称 %B 月份名,如January,大写全称,小写简称 %m 用数字表示的月份(01~12) %d 用数字表示月份中的一天(01~31) %Y 四位的年份,如2015 %y 两位的年份,如15 %H 24小时制的小时数(00~23) %I 12小时制的小时数(01~12) %p am或pm %M 分钟数(00~59) %S 秒数(00~61) """ current_date = datetime.strptime(row[2], "%Y-%m-%d") high = int(row[8]) low = int(row[9]) except ValueError: print(current_date, "missing data") else: dates.append(current_date) highs.append(high) lows.append(low) #print(dates) #print(highs) #print(lows) # 根据数据绘制图形 fig = plt.figure(dpi= 128, figsize=(10, 6)) """ 实参alpha指定颜色的透明度。Alpha值为0表示完全透明,1(默认设置)表示完全不 透明。通过将alpha设置为0.5,可让红色和蓝色折线的颜色看起来更浅。 """ plt.plot(dates, highs, c=‘red‘, alpha=0.5) plt.plot(dates, lows, c=‘blue‘, alpha=0.5) """ 方法fill_between(),它接受一个x值系列和两个y值系列,并填充两个y值系列之间的空间 """ plt.fill_between(dates, highs, lows, facecolor=‘blue‘, alpha=0.1) # 设置图形的格式 title = "Daily high and low temperatures, 2018/1/1~2019/2/11" title += "\nSITKA AIRPORT, AK US" plt.title(title, fontsize=20) plt.xlabel(‘Daily‘, fontsize=16) """调用fig.autofmt_xdate()来绘制斜的日期标签,以免它们彼此重叠""" fig.autofmt_xdate() plt.ylabel("Temperature(F)", fontsize=16) plt.tick_params(axis=‘both‘, which="major", labelsize=16) plt.show()
原文:https://www.cnblogs.com/merryconei123/p/13444864.html