Python中json模块的使用与pyecharts绘图的基本介绍

news2024/11/25 23:29:15

文章目录

    • json模块
      • json与Python数据的相互转化
    • pyecharts模块
      • pyecharts基本操作
        • 基础折线图
        • 配置选项
          • 全局配置选项
    • json模块的数据处理
    • 折线图示例
      • 示例代码

json模块

json实际上是一种数据存储格式,是一种轻量级的数据交互格式,可以把他理解成一个特定格式的字符串以文件的形式存储起来

主要是在各个编程语言中交流的数据格式

从形式上看,json数据格式类似于Python的字典,列表,元组等数据容器

他长得像这样

{"name":"summer","age":18}

[{"name":"summer","age":18},{"name":"morty","age":14}]

我们可以利用一些工具将这些数据的格式层次显示清楚一点

在线JSON格式化工具

例如

当数据量巨大时,或者嵌套层数比较深的时候,这样的工具就比较方便了

json与Python数据的相互转化

import json # 导入json模块

data = [{"name":"summer","age":18},{"name":"morty","age":14}]

data = json.dumps(data)

data = json.loads(data)

dumps方法就是将python数据转化为json数据

loads方法是将json数据转化为python数据

pyecharts模块

我们可以使用pyecharts模块进行数据可视化,这个模块的使用相对比较简单,这里只做基础的介绍

echarts是由百度开源的数据可视化的模块,交互性良好,图表也很精良,pyecharts只是他支持的一个部分

首先我们需要在命令行或者PyCharm中安装pyecharts模块

pip install pyecharts

pyecharts官方文档

pyecharts基本操作

基础折线图
from pyecharts.charts import Line # 导入Line功能构建折现图

line = Line() # 得到折线图对象

line.add_xaxis(['中国','美国','英国']) # 构建x轴行标

line.add_yaxis('GDP',[100,30,50]) # 构建y轴列标与数据

line.render() # 生成图表

运行完成之后回生成一个render.html文件,用浏览器打开之后就是我们的图表

配置选项

在pyecharts模块中由很多的配置选项

全局配置选项

这里可以用set_global_opts可以配置许多的内容,例如标题、图例、颜色、工具箱等内容

之后我们对示例详细讲解

json模块的数据处理

这里我们有一段json数据,格式化之后如下图所示

我们发现他除了数据内容,还包含了一串字符,在数据的末尾还有一个分号(未显示)

我们在把他转化成使用的元组、列表、字典时就需要对这个字符串进行处理

示例如下

import json
# 将json数据已经保存到data中
data = data.replace('jsonp_1629344292311_69436(','') #用空字符替换这一串

data = data[:-2] # 去除最后的括号和分号

这个数据量其实非常大,我们只展示了其中的一部分

折线图示例

import json
from pyecharts.charts import Line
import pyecharts.options as opts

这里我们先导入相关的配置项

file_us = open('C:/Users/Downloads/资料/可视化案例数据/折线图数据/美国.txt', encoding='UTF-8')
us_data = file_us.read()

第一行我们获取了一个文件对象,利用UTF-8格式读取了

再将文件对象读取到us_data中

us_data = us_data.replace('jsonp_1629344292311_69436(','')
us_data = us_data[:-2]

这里我们将开头和结尾进行处理,获得了一个标准的json字符串,也就是我们上图所表示的结构

us_dict = json.loads(us_data)

print(type(us_dict))
print(us_dict)

第一行我们将json字符串加载未python数据格式,通过结构我们可以知道这个结构最外层是字典,我们通过type()和print()验证

这个json包含了某国的疫情数据,由于数据嵌套比较深,我们先取到某国trend下的数据

trend_data = us_dict['data'][0]['trend']

print(type(trend_data ))
print(trend_data )

第一行是我们一路取数据的过程,再经过输出验证一下

这里我们再看看此时的结构

这里我们可以看到有两部分,一部分是更新日期,另一部分分别是数据,因此我们要取更新日期作x轴,为了表示简单,我们只取一列数据作为y轴

x_data = trend_data['updateDate'][:360]
y_data = trend_data['list'][0]['data'][:360]

这里我们就分别取出来了x轴和y轴的数据了,当然为了避免过多的数据挤在同一个表中,使用了切片减少数据

line = Line()
line.add_xaxis(x_data)
line.add_yaxis('确诊人数',y_data)

Line.render()

这里我们就创建了一个折线图对象,添加x轴y轴,将他生成

结果就像这样,如果我们有其他的y轴数据,继续添加y轴数据即可

line.set_global_opts(
    title_opts=opts.TitleOpts(title='某国确诊人数折线图',pos_left='center',pos_bottom='1%')
)

这里是添加了一个标题的全局选项,只是做一个演示,具体的功能还有非常多,详情还请阅读官方文档

示例代码

import json
from pyecharts.charts import Line
import pyecharts.options as opts

file_us = open('C:/Users/Downloads/资料/可视化案例数据/折线图数据/美国.txt', encoding='UTF-8')
us_data = file_us.read()

us_data = us_data.replace('jsonp_1629344292311_69436(','')
us_data = us_data[:-2]

us_dict = json.loads(us_data)
# print(type(us_dict))
# print(us_dict)

trend_data = us_dict['data'][0]['trend']
# print(type(trend_data))
# print(trend_data)

x_data = trend_data['updateDate'][:360]
y_data = trend_data['list'][0]['data'][:360]

line = Line()
line.add_xaxis(x_data)
line.add_yaxis('确诊人数',y_data)

line.set_global_opts(
    title_opts=opts.TitleOpts(title='某国确诊人数折线图',pos_left='center',pos_bottom='1%')
)

line.render()

file_us.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1332631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spark编程实验三:Spark SQL编程

目录 一、目的与要求 二、实验内容 三、实验步骤 1、Spark SQL基本操作 2、编程实现将RDD转换为DataFrame 3、编程实现利用DataFrame读写MySQL的数据 四、结果分析与实验体会 一、目的与要求 1、通过实验掌握Spark SQL的基本编程方法; 2、熟悉RDD到DataFram…

springboot实现发送邮件开箱即用

springboot实现发送邮件开箱即用 环境依赖包yml配置Service层Controller层测试 环境 jdk17 springboot版本3.2.1 依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><ver…

【OAuth2】:赋予用户控制权的安全通行证--原理篇

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于OAuth2的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.什么是OAuth? 二.为什么要用OAuth?…

第11章 GUI Page400~402 步骤二 画直线

运行效果&#xff1a; 源代码&#xff1a; /**************************************************************** Name: wxMyPainterApp.h* Purpose: Defines Application Class* Author: yanzhenxi (3065598272qq.com)* Created: 2023-12-21* Copyright: yanzhen…

《每天一分钟学习C语言·九》引用,指针函数,函数指针等

1、 普通全局变量——作用域是整个源程序&#xff08;含有多个源文件&#xff0c;在各个源文件中都有效&#xff09; static全局变量——作用域在当前源文件 2、 引用 &#xff08;1&#xff09;申明引用的同时必须要初始化 &#xff08;2&#xff09;引用变量是目标变量的一个…

Windows 11中显示文件扩展名的方法与Windows 10大同小异,但前者更人性化

默认情况下&#xff0c;Windows 11会隐藏已知文件类型的文件扩展名。这可能会使在不首先打开文件的情况下很难识别文件类型。 幸运的是&#xff0c;你可以将Windows 11配置为显示已知文件类型的扩展名。该方法类似于Windows 10&#xff0c;但该选项现在组织在下拉菜单中&#…

分布式锁功效初探——以电商问题为例

文章目录 电商库存问题单机处理-Sychronized多机器处理-分布式锁入门级别&#xff0c;用redis实现&#xff0c;setnx问题1&#xff1a;逻辑可能异常&#xff0c;造成死锁问题2&#xff1a;机器宕机问题3&#xff1a;锁一直失效&#xff0c;乱套锁续命 redisson分布式丢锁问题主…

python实现元旦多种炫酷高级倒计时_附源码【第20篇—python过元旦】

文章目录 &#x1f30d;python实现元旦倒计时 — 初级(控制台)⛅实现效果&#x1f30b;实现源码&#x1f31c;源码讲解 &#x1f30d;python实现元旦倒计时 — 中级(精美动态图)⛅实现效果&#x1f30b;实现源码&#x1f31c;源码讲解 &#x1f30d;python实现元旦倒计时 — 高…

C++使用HTTP库和框架轻松发送HTTP请求

编程中使用 HTTP 库或框架发送 HTTP 请求 一、引言二、使用Curl库发送HTTP请求三、使用Boost.Beast库发送HTTP请求四、使用cpp-httplib库发送HTTP请求五、自己实现socket发送 HTTP 请求总结 一、引言 使用C编程发送HTTP请求通常需要使用第三方的HTTP库或框架。在C中&#xff0…

57 代码审计-JAVA项目框架类漏洞分析报告

目录 过滤器及拦截器相关区别解释Struts2-016远程代码执行漏洞分析-黑盒流程SpringBoot-SpEL表达式注入漏洞分析-白盒思路 过滤器及拦截器相关区别解释 Filter是基于函数回调的&#xff0c;而Interceptor则是基于Java反射的。 Filter依赖于Servlet容器&#xff0c;而Intercept…

gitattributes配置文件的作用

0 Preface/Foreword Git版本管控工具功能强大&#xff0c;在使用过程中&#xff0c;在多人合作的项目开发过程中&#xff0c;经常会遇到提交代码时出现的warning提醒&#xff0c;尤其是换行符。 Linux/Unix/Mac OS操作系统的换行符使用LF符号&#xff08;\n&#xff09;&…

Dash中 基本的 callback 5

app.callback 在Dash中&#xff0c;app.callback 被用于创建交互性应用程序&#xff0c;它用于定义一个回调函数&#xff0c;该函数在应用程序中发生特定事件时被触发。回调函数可以修改应用程序的布局或更新图表等内容&#xff0c;从而实现动态交互。 下面是一个简单的 app.…

LaTex详细安装及配置(Windows)

文章目录 引言LaTeX简介优势与应用领域 安装环境安装texlive下载texlive安装 编辑器安装texstudio下载texstudio安装 环境配置 使用第一个LaTex文档新建文件编程查看 效果 结语 引言 在当今信息技术高度发达的时代&#xff0c;文档的编辑和排版是我们日常工作和学习中不可或缺…

JavaScript中的prototype和_proto_的关系是什么

JavaScript中的prototype和_proto_的关系是什么 __proto__ 是 JavaScript 中对象的一个内部属性&#xff0c;它指向该对象的原型。JavaScript 中每个对象都有一个 __proto__ 属性&#xff0c;通过它可以访问对象的原型。prototype 是函数对象特有的属性&#xff0c;每个函数都…

蓝桥杯 1223 第 2 场 小白入门赛

蓝桥小课堂-平方和 模拟 1 2 2 2 3 2 ⋯ n 2 n ⋅ ( n 1 ) ⋅ ( 2 n 1 ) 6 1^22^23^2\cdotsn^2\dfrac{n\;\cdot\;(n 1)\;\cdot\;(2n1)}{6} 122232⋯n26n⋅(n1)⋅(2n1)​。 write(n * (n 1) * (n * 2 1) / 6);房顶漏水啦 m a x ( 最大的行 − 最小的行 , 最大的列 −…

DevC++ 用C语言的多线程 实现简单的客户端和服务器

知识来源一&#xff1a; 使用Dev-C实现简单的客户端和服务器-CSDN博客 此先生的博客使用的是win32 SDK来创建多线程&#xff0c;然后鄙人对这个版本的多线程细节不明。于是又重新用C语言的线程替代win32API,以此继续学习服务器代码。 知识来源二&#xff1a;DevC 多线程创建…

[Netty实践] 简单WebSocket服务实现

目录 一、介绍 二、依赖导入 三、基础类准备 四、Handler实现 五、WebSocketChannelInitializer实现 六、WebSocketServer实现 七、前端实现 八、测试 九、参考链接 一、介绍 关于WebSocket此处不进行过多介绍&#xff0c;本章主要着重通过Netty实现WebSocket通信服务…

在线客服系统:解决常见问题的实用工具与解决方案

市场得不断发展促使着消费者服务意识的觉醒&#xff0c;越来越多的消费者在购买产品的时候不仅看产品的功能、外观、性能&#xff0c;还关注品牌的服务质量。在线客服系统的出现帮助企业解决了客户服务难的问题。接下来&#xff0c;我们具体聊一聊在线客服系统能解决哪些问题&a…

每日一题——LeetCode888

方法一 个人方法&#xff1a; 交换后要达到相同的数量&#xff0c;那么意味着这个相同的数量就是两个人总数的平均值&#xff0c;假设A总共有4个&#xff0c;B总共有8个&#xff0c;那么最后两个人都要达到6个&#xff0c;如果A的第一盒糖果只有1个&#xff0c;那么B就要给出6…

铁山靠之——HarmonyOS基础 - 1.0

HarmonyOS学习第一章 一、HarmonyOS简介1.1 安装和使用DevEco Studio1.2 环境配置1.3 项目创建1.4 运行程序1.5 基本工程目录1.5.1 工程级目录1.5.2 模块级目录1.5.3 app.json51.5.4 module.json51.5.5 main_pages.json 二、TypeScript快速入门2.1 简介2.2 基础类型2.2.1 布尔值…