python利用json和pyecharts画折线图实例代码
作者:阳862 时间:2022-05-02 14:56:19
注:本次实验的数据在文章最后面,我已上传至百度网盘
一.json模块对数据进行处理
上面三个txt文本是这三个国家疫情爆发相关的数据
我们先以美国为例
我们可以看到,这文件里面有些地方不符合json格式,所以在用改文件之前就需要我们去处理
处理json格式的数据我们需要借用json在线解析工具
我这里用的是:
将正确格式复制粘贴到“json数据”中,然后再点击“视图”
这里就会给我们一个流程图
这里我们就要开始分析:
我们需要的是,美国疫情确诊人随时间的变化,我们依次打开就可以找到
这两个部分就是我们需要的 ,我们可以知道这里json是一个字典类型,那么我们就是先要从json中找到data这个key,data是一个列表嵌套一个字典,所以我们用data[0]就可以取得列表里面的内容,从列表里面找到trend这个key,然后同理,再从trend这个字典中找出updateData和data
代码如下
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts
#处理数据
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)
#获取trend key
trend_data=us_dict["data"][0]["trend"]
print(trend_data)
#获取日期数据,用于x轴,取到2020年(到下标314结束)
us_x_data=trend_data["updateDate"][:314]
print(us_x_data)
#获取确诊数据,用于y轴,取到2020年(到下标314结束)
us_y_data=trend_data["list"][0]["data"][:314]
print(us_y_data)
结果是
二.利用pyecharts画折线图
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts
#处理数据
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)
#获取trend key
trend_data=us_dict["data"][0]["trend"]
print(trend_data)
#获取日期数据,用于x轴,取到2020年(到下标314结束)
us_x_data=trend_data["updateDate"][:314]
print(us_x_data)
#获取确诊数据,用于y轴,取到2020年(到下标314结束)
us_y_data=trend_data["list"][0]["data"][:314]
print(us_y_data)
#生成图表
line=Line()#构建折线图对象
#添加x轴对象
line.add_xaxis(us_x_data)
#添加y周数据
line.add_yaxis("美国确诊人数",us_y_data)
#设置全局变量
line.set_global_opts(
title_opts=TitleOpts(title="2020年美国确诊人数折线图",pos_left="center",pos_bottom="1%")
)
#调用render方法,生成图表
line.render()
#关闭文件
f_us.close()
结果是
三.利用pyecharts画美、日、印三国家折线图
日本和印度的数据处理部分,跟美国的处理方法是一样的,代码如下:
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts
#处理数据
f_us=open("D:/美国.txt","r",encoding="utf-8")
f_jp=open("D:/日本.txt","r",encoding="utf-8")
f_in=open("D:/印度.txt","r",encoding="utf-8")
us_data=f_us.read()
jp_data=f_jp.read()
in_data=f_in.read()
#去掉不合json规范的开头
us_data=us_data.replace("jsonp_1629344292311_69436(","")
jp_data=jp_data.replace("jsonp_1629350871167_29498(","")
in_data=in_data.replace("jsonp_1629350745930_63180(","")
#去掉不合JSON规范的结尾
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]
jp_x_data=jp_trend_data["updateDate"][:314]
in_x_data=in_trend_data["updateDate"][:314]
#获取确诊数据,用于y轴,取到2020年(到下标314结束)
us_y_data=us_trend_data["list"][0]["data"][:314]
jp_y_data=jp_trend_data["list"][0]["data"][:314]
in_y_data=in_trend_data["list"][0]["data"][:314]
#生成图表
line=Line()#构建折线图对象
#添加x轴对象
line.add_xaxis(us_x_data)#因为x轴都是一样的,所以就用一个就可
#添加y周数据
line.add_yaxis("美国确诊人数",us_y_data)
line.add_yaxis("日本确诊人数",jp_y_data)
line.add_yaxis("印度确诊人数",in_y_data)
#设置全局变量
line.set_global_opts(
title_opts=TitleOpts(title="2020年美国、日本、印度确诊人数折线图",pos_left="center",pos_bottom="1%")
)
#调用render方法,生成图表
line.render()
#关闭文件
f_us.close()
f_jp.close()
f_in.close()
结果是
还有一个下问题:很多数字重叠了
我们可以利用全局选项中的图例来解决,让其不显示
按下Ctrl+p就会显示有哪些位置参数,label_opts就是控制图例的
#添加y周数据
line.add_yaxis("美国确诊人数",us_y_data,label_opts=False)
line.add_yaxis("日本确诊人数",jp_y_data,label_opts=False)
line.add_yaxis("印度确诊人数",in_y_data,label_opts=False)
结果是
四.本文数据集
链接: https://pan.baidu.com/s/1L1Z-lkErmUZqgJxlGW_xAQ?pwd=7par
提取码: 7par
来源:https://blog.csdn.net/weixin_63318044/article/details/128433862
标签:python,画折线图
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2023-06-28 02:44:14
![](https://img.aspxhome.com/file/2023/5/61455_0s.jpg)
解决GOPATH在GOLAND中的坑
2023-07-12 23:46:16
![](https://img.aspxhome.com/file/2023/0/97170_0s.jpg)
对SQL Server聚集索引的指示综合描述
2010-08-31 14:25:00
Javascript 每日测试 - 第五期 callee及function
2008-07-10 13:22:00
比较全面的PHP数组的使用方法小结
2023-11-18 21:30:25
简单了解python中的与或非运算
2021-03-20 01:45:02
![](https://img.aspxhome.com/file/2023/5/67915_0s.png)
Golang使用ini库读取配置详情
2023-07-02 07:46:56
![](https://img.aspxhome.com/file/2023/5/89035_0s.webp)
设计英文网站要注意的问题
2011-04-28 11:22:00
使用WingPro 7 设置Python路径的方法
2022-05-23 03:59:56
![](https://img.aspxhome.com/file/2023/5/69005_0s.jpg)
DreamWeaver制作会移动的广告条
2008-02-03 11:34:00
PHP版微信小店接口开发实例
2023-11-10 11:56:06
CentOS环境下安装Redis3.0及phpredis扩展测试示例
2023-11-21 18:20:05
![](https://img.aspxhome.com/file/2023/1/110141_0s.png)
web版Photoshop来了
2008-04-21 13:39:00
![](https://img.aspxhome.com/file/UploadPic/20084/21/2008421134249782s.jpg)
Python模拟登录和登录跳转的参考示例
2023-07-29 07:09:47
Python中staticmethod和classmethod的作用与区别
2022-03-12 21:30:00
ajax标签导航实例详解教程
2008-02-01 10:54:00
![](https://img.aspxhome.com/file/UploadPic/up/2008020111434016.gif)
javascript封装的下拉导航菜单渐显效果
2007-08-04 20:11:00
python中while循环语句用法简单实例
2021-12-03 22:34:44
Go中函数的使用细节与注意事项详解
2023-10-15 01:02:32
![](https://img.aspxhome.com/file/2023/6/103056_0s.jpg)
使用ASP订制自己的XML文件读写方法
2008-10-24 09:35:00