数据准备|生成折线图
P103 数据准备
网站(通过第三方工具查看标准json数据):ab173
打开后-json相关-json视图-粘贴json数据-格式化
数据处理
"""
演示可视化需求1:折线图开发
"""import json# 处理数据
f_us=open("D:/美国.txt","r",encoding="UTF-8")
us_data=f_us.read() # 读取美国的全部内容
# 去掉不符json规范的开头
us_data=us_data.replace("jsonp_1629344292311_69436(","")
#去掉不合json规范的结尾
us_data=us_data[:-2] # 用切片去掉最后两个字符
# json转python字典
us_dict=json.loads(us_data)
# print(type(us_dict))
# print(us_dict)
# 获取trend key
trend_data=us_dict['data'][0]['trend']
# print(type(trend_data))
# print(trend_data)
# 获取日期数据,用于x轴,取2020年(到314下标结束)
x_data=trend_data['updateDate'][:314]
print(x_data)
# 获取确认数据,用于y轴,取2020年(到314下标结束)
y_data=trend_data['list'][0]['data'][:314]
print(y_data)
# 生成图表
P104生成折线图
"""
演示可视化需求1:折线图开发
"""import json
from pyecharts.charts import Line# 处理数据
f_us=open("D:/美国.txt","r",encoding="UTF-8")
us_data=f_us.read() # 读取美国的全部内容f_in=open("D:/印度.txt","r",encoding="UTF-8")
in_data=f_in.read() # 读取印度的全部内容f_jp=open("D:/日本.txt","r",encoding="UTF-8")
jp_data=f_jp.read() # 读取日本的全部内容# 去掉不符json规范的开头
us_data=us_data.replace("jsonp_1629344292311_69436(","")
in_data=in_data.replace("jsonp_1629350745930_63180(","")
jp_data=jp_data.replace("jsonp_1629350871167_29498(","")
#去掉不合json规范的结尾
us_data=us_data[:-2] # 用切片去掉最后两个字符
in_data=in_data[:-2]
jp_data=jp_data[:-2]
# json转python字典
us_dict=json.loads(us_data)
in_dict=json.loads(in_data)
jp_dict=json.loads(jp_data)
# print(type(us_dict))
# print(us_dict)
# print(type(in_dict))
# print(in_dict)
# print(type(jp_dict))
# print(jp_dict)# 获取trend key
us_trend_data=us_dict['data'][0]['trend']
in_trend_data=in_dict['data'][0]['trend']
jp_trend_data=jp_dict['data'][0]['trend']
# print(type(us_trend_data))
# print(us_trend_data)
# 获取日期数据,用于x轴,取2020年(到314下标结束)
us_x_data=us_trend_data['updateDate'][:314]
in_x_data=in_trend_data['updateDate'][:314]
jp_x_data=jp_trend_data['updateDate'][:314]
# print(us_x_data)
# print(in_x_data)
print(jp_x_data)
# 获取确认数据,用于y轴,取2020年(到314下标结束)
us_y_data=us_trend_data['list'][0]['data'][:314]
in_y_data=in_trend_data['list'][0]['data'][:314]
jp_y_data=jp_trend_data['list'][0]['data'][:314]# print(us_y_data)
# print(in_y_data)# 生成图表
line=Line() # 构建折线图对象
# 添加x轴数据
line.add_xaxis(us_x_data) # x轴是共用的,所以使用一个国家的数据即可
# 添加y轴数据
line.add_yaxis("美国确诊人数",us_y_data) # 添加美国y轴数据
line.add_yaxis("印度确诊人数",in_y_data)
line.add_yaxis("日本确诊人数",jp_y_data)# 调用render方法,生成图表
line.render()# 关闭文件对象
f_us.close()
f_in.close()
f_jp.close()
美化一下:
- 添加标题
- 去掉折线上的数字
"""
演示可视化需求1:折线图开发
"""import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LabelOpts,LabelOpts# 处理数据
f_us=open("D:/美国.txt","r",encoding="UTF-8")
us_data=f_us.read() # 读取美国的全部内容f_in=open("D:/印度.txt","r",encoding="UTF-8")
in_data=f_in.read() # 读取印度的全部内容f_jp=open("D:/日本.txt","r",encoding="UTF-8")
jp_data=f_jp.read() # 读取日本的全部内容# 去掉不符json规范的开头
us_data=us_data.replace("jsonp_1629344292311_69436(","")
in_data=in_data.replace("jsonp_1629350745930_63180(","")
jp_data=jp_data.replace("jsonp_1629350871167_29498(","")
#去掉不合json规范的结尾
us_data=us_data[:-2] # 用切片去掉最后两个字符
in_data=in_data[:-2]
jp_data=jp_data[:-2]
# json转python字典
us_dict=json.loads(us_data)
in_dict=json.loads(in_data)
jp_dict=json.loads(jp_data)
# print(type(us_dict))
# print(us_dict)
# print(type(in_dict))
# print(in_dict)
# print(type(jp_dict))
# print(jp_dict)# 获取trend key
us_trend_data=us_dict['data'][0]['trend']
in_trend_data=in_dict['data'][0]['trend']
jp_trend_data=jp_dict['data'][0]['trend']
# print(type(us_trend_data))
# print(us_trend_data)
# 获取日期数据,用于x轴,取2020年(到314下标结束)
us_x_data=us_trend_data['updateDate'][:314]
in_x_data=in_trend_data['updateDate'][:314]
jp_x_data=jp_trend_data['updateDate'][:314]
# print(us_x_data)
# print(in_x_data)
print(jp_x_data)
# 获取确认数据,用于y轴,取2020年(到314下标结束)
us_y_data=us_trend_data['list'][0]['data'][:314]
in_y_data=in_trend_data['list'][0]['data'][:314]
jp_y_data=jp_trend_data['list'][0]['data'][:314]# print(us_y_data)
# print(in_y_data)# 生成图表
line=Line() # 构建折线图对象
# 添加x轴数据
line.add_xaxis(us_x_data) # x轴是共用的,所以使用一个国家的数据即可
# 添加y轴数据
line.add_yaxis("美国确诊人数",us_y_data,label_opts=LabelOpts(is_show=False)) # 添加美国y轴数据,折线上的数字不显示
line.add_yaxis("印度确诊人数",in_y_data,label_opts=LabelOpts(is_show=False))
line.add_yaxis("日本确诊人数",jp_y_data,label_opts=LabelOpts(is_show=False))# 设置全局选项
line.set_global_opts(# 标题设置title_opts=TitleOpts(title="2020年美印日三国确诊人数对比折线图",pos_left="center",pos_bottom="1%")
)# 调用render方法,生成图表
line.render()# 关闭文件对象
f_us.close()
f_in.close()
f_jp.close()