数据可视化:下载数据

绘制气温图表

Step 1:绘制基本图形

# csv模块用于分析csv文件中的数据行
import csv
from matplotlib import pyplot as plt

# 从文件中获取最高气温
# 将要使用的文件的名称存储在filename中
filename = 'sitka_weather_07-2014.csv'
# 打开文件,并将结果文件对象存储在f中
with open(filename) as f:
    # 调用csv.reader(),创建一个与该文件相关联的阅读器(reader)对象
    reader = csv.reader(f)
    # 模块csv的reader类包含next()方法,返回文件中的下一行
    header_row = next(reader)

    highs = []
    for row in reader:
        # 使用int()将字符串转为数字,让matplotlib能够读取他们
        high = int(row[1])
        highs.append(high)

# 根据数据绘制图形
fig = plt.figure(dpi=128, figsize=(10, 6))
plt.plot(highs, c='red')

# 设置图形的格式
plt.title("Daily high temperatures July 2014", fontsize=24)
plt.xlabel('', fontsize=16)
plt.ylabel("Temperature (F)", fontsize=16)
plt.tick_params(axis='both', which='major', labelsize=16)

plt.show()

在这里插入图片描述

Step 2:优化图形

# csv模块用于分析csv文件中的数据行
import csv
from matplotlib import pyplot as plt
from datetime import datetime

# 从文件中获取日期、最高气温和最低气温
# 将要使用的文件的名称存储在filename中
filename = 'sitka_weather_2014.csv'
# 打开文件,并将结果文件对象存储在f中
with open(filename) as f:
    # 调用csv.reader(),创建一个与该文件相关联的阅读器(reader)对象
    reader = csv.reader(f)
    # 模块csv的reader类包含next()方法,返回文件中的下一行
    header_row = next(reader)

    dates, highs, lows = [], [], []
    for row in reader:
        current_date = datetime.strptime(row[0], "%Y-%m-%d")
        dates.append(current_date)

        # 使用int()将字符串转为数字,让matplotlib能够读取他们
        high = int(row[1])
        highs.append(high)

        low = int(row[3])
        lows.append(low)

# 根据数据绘制图形
fig = plt.figure(dpi=128, figsize=(10, 6))
# alpha为颜色透明度
plt.plot(dates, highs, c='red', alpha=0.5)
plt.plot(dates, lows, c='blue', alpha=0.5)
# facecolor指定填充区域颜色
plt.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)

# 设置图形的格式
plt.title("Daily high and low temperatures - 2014", fontsize=24)
plt.xlabel('', fontsize=16)
# 避免x轴日期重叠
fig.autofmt_xdate()
plt.ylabel("Temperature (F)", fontsize=16)
plt.tick_params(axis='both', which='major', labelsize=16)

plt.show()

在这里插入图片描述

制作交易收盘走势图:JSON格式

import json
import pygal

# 将数据加载到一个列表中
filename = 'btc_close_2017.json'
with open(filename) as f:
    btc_data = json.load(f)

# 打印每一天的信息
for btc_dict in btc_data:
    date = btc_dict['date']
    month = int(btc_dict['month'])
    week = int(btc_dict['week'])
    weekday = btc_dict['weekday']
    # python不能将包含小数点的字符串转换为整数,需先将其转换为浮点数,再将浮点数转换为整数
    close = int(float(btc_dict['close']))
    print("{} is month {} week {}, {}, the close price is {} RMB".format(
        date, month, week, weekday, close))

# 创建5个列表,分别存储日期和收盘价
dates = []
months = []
weeks = []
weekdays = []
close = []
# 每一天的信息
for btc_dict in btc_data:
    dates.append(btc_dict['date'])
    months.append(int(btc_dict['month']))
    weeks.append(int(btc_dict['week']))
    weekdays.append(btc_dict['weekday'])
    close.append(int(float(btc_dict['close'])))

# x_label_rotation=20让x轴上日期标签顺时针旋转20°
# show_minor_x_labels=False告诉图形不用显示所有的x轴标签
line_chart = pygal.Line(x_label_rotation=20, show_minor_x_labels=False)
line_chart.title = '收盘价(¥)'
line_chart.x_labels = dates
# x轴坐标每隔20天显示一次
N = 20
line_chart.x_labels_major = dates[::N]
line_chart.add('收盘价', close)
line_chart.render_to_file('收盘价折线图(¥).svg')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值