Python绘图-Pygal-pygal_draw2.py
准备文件btc_close_2017.json在程序目录下,该文件可从https://www.ituring.com.cn/book/1861右侧随书下载栏下载
# ~ coding=GBK
import json
import pygal
import math
filename = 'btc_close_2017.json'
with open(filename,'r') as f:
data = json.load(f)#data为存储了每天收盘数据的字典
dates,months,weeks,weekdays,closes = [],[],[],[],[]
for btc_dict in data:
date = btc_dict['date']
dates.append(date)
month = int(btc_dict['month'])
months.append(month)
week = int(btc_dict['week'])
weeks.append(week)
weekday = btc_dict['weekday']
weekdays.append(weekday)
close = int(float(btc_dict['close']))
closes.append(close)
print("{} is month {} week {}, {}, the close price is {} RMB"
.format(date,month,week,weekday,close))
# ~ 绘制折线图
line_chart = pygal.Line(x_label_rotation=20,show_minor_x_labels=False)
# ~ 设置图标标题
line_chart.title = 'Close price (RMB)'
# ~ 设置x轴标签
line_chart.x_title = 'Date (yyyy-mm-dd)'
line_chart.x_labels = dates
N = 30
line_chart.x_labels_major = dates[::N]#从头到尾间隔N
# ~ 设置数值系列
line_chart.add('Close price',closes,dots_size=2)
close_logs = [math.log10(_) for _ in closes]
line_chart.add('Close price - log10',close_logs,secondary=True,dots_size=2)
line_chart.render_to_file('close_price.svg')#渲染为svg文件
程序运行结果如下: