要求:
对印度美国日本三个国家确诊人数进行可视化处理,形成了可视化的确诊人数报告。
折线图所用的数据:https://pan.baidu.com/s/11nsgMztT9eYQxOEL4_korw?pwd=1234
JSON在线视图查看器(Online JSON Viewer):https://www.bejson.com/jsonviewernew/
pyecharts包的全局配置项:https://pyecharts.org/#/zh-cn/global_options
# 坐标轴标签配置项,参考 `series_options.LabelOpts`
axislabel_opts: Union[LabelOpts, dict, None] = None,
pyecharts包折线图的可视化案例:https://gallery.pyecharts.org/#/Line/README
代码:
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LabelOpts
# 打开
f_usa = open(r"D:\Downloads\第1-12章资料\3可视化案例数据\折线图数据\美国.txt", "r", encoding="UTF-8")
usa_data = f_usa.read() # 美国(USA)的数据
f_jpn = open(r"D:\Downloads\第1-12章资料\3可视化案例数据\折线图数据\日本.txt", "r", encoding="UTF-8")
jpn_data = f_jpn.read() # 日本(JPN)的数据
f_ind = open(r"D:\Downloads\第1-12章资料\3可视化案例数据\折线图数据\印度.txt", "r", encoding="UTF-8")
ind_data = f_ind.read() # 印度(IND)的数据
# 去掉txt中不合JSON规范的开头
usa_data = usa_data.replace("jsonp_1629344292311_69436(", "")
jpn_data = jpn_data.replace("jsonp_1629350871167_29498(", "")
ind_data = ind_data.replace("jsonp_1629350745930_63180(", "")
# 去掉txt不合JSON规范的结尾
usa_data = usa_data.strip(");")
jpn_data = jpn_data.strip(");")
ind_data = ind_data.strip(");")
# JSON转Python字典
usa_dict = json.loads(usa_data)
jpn_dict = json.loads(jpn_data)
ind_dict = json.loads(ind_data)
# 获取trend key(trend底下就是updateDate和list)
usa_trend_data = usa_dict['data'][0]['trend']
jpn_trend_data = jpn_dict['data'][0]['trend']
ind_trend_data = ind_dict['data'][0]['trend']
# 获取日期数据,用于x轴,取2020年(到314下标结束)
usa_x_data = usa_trend_data['updateDate'][:314]
jpn_x_data = jpn_trend_data['updateDate'][:314]
ind_x_data = ind_trend_data['updateDate'][:314]
# 获取确认数据,用于y轴,取2020年(到314下标结束)
usa_y_data = usa_trend_data['list'][0]['data'][:314]
jpn_y_data = jpn_trend_data['list'][0]['data'][:314]
ind_y_data = ind_trend_data['list'][0]['data'][:314]
# 生成图表
zhexiantu = Line()
# 添加x轴数据
zhexiantu.add_xaxis(usa_x_data) # x轴是公用的,所以使用一个国家的数据即可
# 添加y轴数据,关闭每个数据点的数值显示“label_opts”
zhexiantu.add_yaxis("美国确诊人数", usa_y_data, label_opts=LabelOpts(is_show=False))
zhexiantu.add_yaxis("日本确诊人数", jpn_y_data, label_opts=LabelOpts(is_show=False))
zhexiantu.add_yaxis("印度确诊人数", ind_y_data, label_opts=LabelOpts(is_show=False))
# 设置全局选项(增加图表中的内容)
zhexiantu.set_global_opts(
# 标题设置
title_opts=TitleOpts(title="2020年美日印三国确诊人数对比折线图", pos_left="center", pos_bottom="1%")
)
# 调用render方法,生成图表
zhexiantu.render()
# 关闭
f_usa.close()
f_jpn.close()
f_ind.close()
输出效果:
视频来源:第十章-06-生成折线图 作者:矢来美羽MIUYARAI https://www.bilibili.com/read/cv24852872/ 出处:bilibili