问题是来自于在Python编程那一本书16.1.6的代码
先感谢@我叫嘻嘻呵呵博主给我的一种思路
书中原来的代码及运行结果
import csv
from datetime import datetime
import matplotlib.pyplot as plt
filename = 'sitka_weather_07-2014.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
highs, dates = [], []
for row in reader:
column_date = datetime.strptime(row[0], '%Y-%m-%d')
dates.append(column_date)
high = int(row[1])
highs.append(high)
fig = plt.figure(dpi=128, figsize=(10, 6))
plt.plot(dates, highs, c='red')
plt.title("Daily high temperature,July 2014", fontsize=24)
plt.xlabel('', fontsize=16)
fig.autofmt_xdate()
plt.ylabel("Temperature (F)", fontsize=16)
plt.tick_params(axis='both', which='major', labelsize=16)
plt.show()
运行结果如下:
结果发现与原书的运行结果不一样
书中的是这种:
说明需要手动去修改属性
改进后的
import csv
from matplotlib import pyplot as plt
from datetime import datetime
from matplotlib import dates as dates_pro
filename = 'sitka_weather_07-2014.csv'
with open(filename) as f:
"""将文件对象存储"""
# 将f传递给reader来创建一个阅读器reader
reader = csv.reader(f)
# 头文件,第一次调用next
header_row = next(reader)
# 存储日期和每日最高温度
dates, highs = [], []
for row in reader:
column_date = datetime.strptime(row[0], '%Y-%m-%d') # 字符串格式化成日期格式
dates.append(column_date)
high = int(row[1])
highs.append(high)
# 设置分辨率
fig = plt.figure(dpi=128, figsize=(10, 6))
# 将数据导入
plt.plot(dates, highs, c='red')
plt.title("Daily high temperatures,July 2014", fontsize=24)
# 设置横坐标日期格式
plt.gca().xaxis.set_major_formatter(dates_pro.DateFormatter('%b %d %Y'))
# 设置横坐标日期间隔
plt.gca().xaxis.set_major_locator(dates_pro.DayLocator(interval=3))
# 设置横坐标日期范围
plt.xlim([datetime(2014, 7, 1), datetime(2014, 7, 31)])
# 设置x轴标签
plt.xlabel('', fontsize=16)
# 绘制斜的日期
fig.autofmt_xdate()
# y轴取值范围
plt.yticks(range(54, 74, 2))
# y轴标签
plt.ylabel("Temperature (F)", fontsize=16)
# 坐标轴刻度属性
plt.tick_params(axis='both', which='major', direction='in', labelsize=16)
plt.show()
运行结果如下: