[数据可视化]使用matplotlib对CSV文件数据进行绘图

[数据可视化]使用matplotlib对CSV文件数据进行绘图

使用CSV格式的锡特卡天气数据
绘制2018年1月1日的天气数据,先放成果:
在这里插入图片描述

代码部分包括以下内容:

  1. 分析CSV文件头
  2. 打印文件头及其位置
  3. 提取并读取数据
  4. 绘制温度图表:模块datetime;给图表区域着色

具体解释放在代码里了。

import csv
from datetime import datetime

import matplotlib.pyplot as plt

filename = 'data/sitka_weather_2018_simple.csv'
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)
    #模块csv包含函数next(),调用它并传入阅读器对象时,将返回文件的下一行。上述代码中只、
    #调用了next()一次,因此得到的是文件的第一行,其中包含文件头。
    #print(header_row)
    #reader处理文件中以逗号分隔的第一行数据,并将每项数据都作为一个元素存储在列表中。

    # for index, column_header in enumerate(header_row):
    #     #对列表调用了enumerate()来获取每个元素的索引及其值
    #     print(index, column_header)

    # 从文件中获取日期、最高温度和最低温度。
    dates, highs, lows = [], [], []
    for row in reader: #已经读取了文件头行,循环将从第二行——从这行开始包含实际数据
        current_date = datetime.strptime(row[2], '%Y-%m-%d') 
        #将字符串"20xx-xx-xx"转换为一个表示相应日期的对象
        high = int(row[5])
        low = int(row[6])
        dates.append(current_date)
        highs.append(high)
        lows.append(low)

# 根据最高温度绘制图形。
plt.style.use('seaborn')
fig, ax = plt.subplots()
ax.plot(dates, highs, c='red',alpha=0.5) 
#将日期、最高温度列表传给plot(), 颜色red; alpha:指定颜色透明度,0透明,1不透明
ax.plot(dates, lows, c='blue',alpha=0.5)
ax.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)
#方法fill_between()着色:一个x值系列(dates),两个y值系列(highs和lows),facecolor指定填充区域颜色

# 设置图形的格式。
ax.set_title("2018年每日最高温度", fontsize=24)#阿拉斯加州锡特卡2018年7月的每日最高温度
ax.set_xlabel('', fontsize=16)#还没有添加日期,因此没给x轴加标签,但确实修改了字号
fig.autofmt_xdate() #调用fig.autofmt_xdate()来绘制倾斜的日期标签,以免其彼此重叠
ax.set_ylabel("温度 (F)", fontsize=16)
ax.tick_params(axis='both', which='major', labelsize=16)

plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
plt.show()
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值