一 json 数据格式
1.什么是json
json 是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据(就是字符串)。Python 语言使用JSON 有很大优势,因为 JSON 无非就是一个单独的字典或一个内部元素都是字典的列表,所以JSON 可以直接和 Python 的字典或列表进行无缝转换。
2.json的作用
3.json格式数据转化
字典,列表内部嵌套字典。
4.python数据和json数据的相互转化
设置 False 表明不使用 ASCII 去转换,而是直接转换出去。
二 pyecharts
1.概述
2.官方示例:
里面有很多图表的效果图,并且有参考代码,换个数据即可。
3.安装
4.案例
文件操作:通过open()得到一个文件对象。这里是通过Line()得到一个折线图的对象。有了空的 x 轴和 y 轴。
5.有哪些配置项
全局配置选项:图像的标题,图例等。和图表类型无关。通用的配置。
系列配置选项:具体的轴数据等。
set_global_opts 方法
title_opts = 关键字传参,传一个标题相关的功能对象。
前面 from pyecharts.charts import Line 导入了折线图对象。
要构建标题相关的功能对象就还要去导包 from pyecharts.options import TitleOpts。
TitleOpts 就是标题的控制选项。
pos :position 靠近左边有多远,靠近底部有多远。
图例 legend | from pyecharts.options import TitleOpts,LegendOpts。
工具箱 toolbox | from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts。
视觉映射 visualmap | from.........,VisualMapOpts。
工具提示 tooltip
不用特别记,要用的时候上pyecharts网页即可。
官方文档:
全局配置项 - pyecharts - A Python Echarts Plotting Library built with love.全局配置项 - pyecharts - A Python Echarts Plotting Library built with love.
全局配置项 - pyecharts - A Python Echarts Plotting Library built with love.
全局配置项能做什么
三 数据处理
本质是个json文件,但是开头不符合规范,通过代码处理掉。
都去掉后,可以通过第三方工具快速查看格式。
173软件站-专业绿色手游攻略资讯懒人手机软件app下载平台JSON着色工具-json数据着色-懒人工具|www.ab173.com
173软件站-专业绿色手游攻略资讯懒人手机软件app下载平台
这个是value和value对应,2.21是updateDate的值中的第一个,和data的值中的第一个对应,他们的key还不是同一层的,看上去就非常乱。
步骤1: 先取到 trend 这个 key ,先拿到框框里面的这些 value 。
data(key)里面取到的是一个列表,列表里面只有一个字典元素,再取里面字典的 trend 键即可。
步骤2:取2020年这一年就就好了。
步骤3:拿到确诊数据作为 y 轴。
步骤4:相同方法处理日本和印度的数据。
import json
# 处理数据
f_us = open("D:\美国.txt","r",encoding="UTF-8")
US_data = f_us.read() # 美国的全部内容
f_jp = open("D:\日本.txt","r",encoding="UTF-8")
JP_data = f_jp.read() # 日本的全部内容
f_in = open("D:\印度.txt","r",encoding="UTF-8")
IN_data = f_in.read() # 印度的全部内容
#去掉开头
US_data = US_data.replace("jsonp_1629344292311_69436("," ")
JP_data = JP_data.replace("jsonp_1629350871167_29498("," ")
IN_data = IN_data.replace("jsonp_1629350745930_63180("," ")
#去掉结尾
US_data = US_data[:-2]
JP_data = JP_data[:-2]
IN_data = IN_data[:-2]
#json转python
US_dict = json.loads(US_data)
JP_dict = json.loads(JP_data)
IN_dict = json.loads(IN_data)
# 获取 trend key
US_trend_data = US_dict["data"][0]["trend"]
JP_trend_data = JP_dict["data"][0]["trend"]
IN_trend_data = IN_dict["data"][0]["trend"]
# 获取日期数据,用于x轴,取2020年(到314下标结束)
US_x_data = US_trend_data["updateDate"][:314] # 不包括314
JP_x_data = JP_trend_data["updateDate"][:315] # 不包括315
IN_x_data = IN_trend_data["updateDate"][:269] # 不包括269
# 获取确诊数据,用于y轴,取2020年(到314下标结束)
US_y_data = US_trend_data["list"][0]["data"][:314] #这个数据和日期是一一对应的
JP_y_data = JP_trend_data["list"][0]["data"][:315]
IN_y_data = IN_trend_data["list"][0]["data"][:269]
四 创建折线图
1.导入模块
2.折线图相关配置项
3.全局配置项
使用前要导包。
五 总结
import json
from pyecharts.charts import Line
# 处理数据
f_us = open("D:\美国.txt","r",encoding="UTF-8")
US_data = f_us.read() # 美国的全部内容
f_jp = open("D:\日本.txt","r",encoding="UTF-8")
JP_data = f_jp.read() # 日本的全部内容
f_in = open("D:\印度.txt","r",encoding="UTF-8")
IN_data = f_in.read() # 印度的全部内容
#去掉开头
US_data = US_data.replace("jsonp_1629344292311_69436("," ")
JP_data = JP_data.replace("jsonp_1629350871167_29498("," ")
IN_data = IN_data.replace("jsonp_1629350745930_63180("," ")
#去掉结尾
US_data = US_data[:-2]
JP_data = JP_data[:-2]
IN_data = IN_data[:-2]
#json转python
US_dict = json.loads(US_data)
JP_dict = json.loads(JP_data)
IN_dict = json.loads(IN_data)
# 获取 trend key
US_trend_data = US_dict["data"][0]["trend"]
JP_trend_data = JP_dict["data"][0]["trend"]
IN_trend_data = IN_dict["data"][0]["trend"]
# 获取日期数据,用于x轴,取2020年(到314下标结束)
US_x_data = US_trend_data["updateDate"][:314] # 不包括314
JP_x_data = JP_trend_data["updateDate"][:315] # 不包括315
IN_x_data = IN_trend_data["updateDate"][:269] # 不包括269
# 获取确诊数据,用于y轴,取2020年(到314下标结束)
US_y_data = US_trend_data["list"][0]["data"][:314] #这个数据和日期是一一对应的
JP_y_data = JP_trend_data["list"][0]["data"][:315]
IN_y_data = IN_trend_data["list"][0]["data"][:269]
# 生成图表
line = Line() # 构建折线图对象
# 添加x轴数据 x轴是公用的,使用一个国家的x轴数据即可
line.add_xaxis(US_x_data)
# 添加y轴数据
line.add_yaxis("美国确诊人数",US_y_data) # 美国的y轴数据
line.add_yaxis("日本确诊人数",JP_y_data) # 日本的y轴数据
line.add_yaxis("印度确诊人数",IN_y_data) # 印度的y轴数据
# 调用render方法生成图表
line.render()
#关闭文件
f_us.close()
f_jp.close()
f_in.close()
在生成图标render之前进行全局配置。
标题设置:
数字太乱:设置 y 轴的属性。