Python03--《Python编程:从入门到实践》16.1.6-关于对坐标轴属性的设置

问题是来自于在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()

运行结果如下:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值