python利用json和pyecharts画折线图实例代码
作者:阳862 发布时间:2022-05-02 14:56:19
标签:python,画折线图
注:本次实验的数据在文章最后面,我已上传至百度网盘
一.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


猜你喜欢
- 本文讲述的内容基于 Django 1.11摘要Django 中的中间件(middleware),是一个镶嵌到Django的request/r
- 今天刚好需要配置mysql 5.5.45,因为数据库量挺大的,所以必须优化,要不mysql真的不快。(1)、max_connections:
- 1.图片分类网络这是一个二分类网络,可以是alxnet ,vgg,resnet任何一个,负责对图片进行二分类,区分图片是真实图片还是生成的图
- 本文实例主要实现的是使用urllib和BeautifulSoup爬取 * 的词条,具体如下。简洁代码:#引入开发包from urllib.
- 在学习使用django做一个简单的个人博客项目,通过admin后台添加中文文章内容的时候,遇到中文内容显示乱码的问题。排除了网上资料中的提到
- 在我们的web应用中,虽然PHP、JSP等脚本均提供了MySQL的接口,但是显然直接使用C语言具有更好的安全性和性能,在这篇文章中能够有所体
- 前言:Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP支持有smtplib和ema
- 本文实例为大家分享了python图片插入文字的具体代码,供大家参考,具体内容如下问题如何在图片中插入大量文字并且自动换行效果原始图效果图注明
- 给定一个可迭代sequence,对其中的值进行出现次数统计:方法1:def get_counts(sequence): counts = {
- 对于字典的操作,本篇介绍的是在其中添加值的方法,下面带来详细的介绍。1、通过键=值的方式进行添加。如果键存在,则会将旧的值进行覆盖,如果不存
- 本文实例讲述了Python实现从SQL型数据库读写dataframe型数据的方法。分享给大家供大家参考,具体如下:Python的pandas
- Git 是什么?Git 是一个分布式的代码管理容器,本地和远端都保有一份相同的代码。 Git 仓库主要是由是三部分组成:本地代码,缓存区,提
- 有时候可能需要检测下某台机器的服务是不是起来了,或者某台机器的某个库是不是能被连接又不能打开ssms也不想登陆服务器的话就可以用这个方法。1
- 1、replicate_do_db 和 replicate_ignore_db 不要同时出现。容易出现混淆。也是毫无意义的。 Replica
- 前言最近在工作经常会碰到对字符串进行去重操作,下面就给大家列出用Python如何处理的,话不多说了,来一起看看详细的介绍吧。比如说,要拿下面
- 本文主要是对leveldb进行一个简单的介绍及使用Python语言对其进行操作的代码示例,具体如下。leveldb 是google实现的一种
- #!/usr/bin/python## get subprocess module import subprocess ## ca
- 误区 #21:数据库损坏可以通过重启SQL Server或是Windows,或是附加和分离数据库解决 错误 SQL Server中没有任何一
- Python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。Python提供
- 1.mysql复制概念 指将主数据库的DDL和DML操作通过二进制日志传到复制服务器上,然后在复制服务器上将这些日志文件重新执行