Python数据可视化案例——折线图

news2024/12/24 20:34:00

目录

json介绍:

Pyecharts介绍

安装pyecharts包 

构建一个基础的折线图

配置全局配置项

综合案例:

使用工具对数据进行查看 :

数据处理


json介绍:

  json是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据。不同语言格式之间通过json进行转化,json本质上为字符串。

 下面演示使用json进行数据格式的转化。

  python转为json使用json的dumps方法。

代码演示:

import json
# python转为json
# 列表转化
data =[{"name":"张三","age":12},{"name":"王五","age":13},{"name":"李四","age":14}]
json_str1=json.dumps(data,ensure_ascii= False) # ensure_ascii= false,让中文内容直接输出不转换为码
print(type(json_str1))
print(json_str1)

# 字典转化
d={'name':'李四','age':12}
json_str2=json.dumps(d,ensure_ascii= False)
print(type(json_str2))
print(json_str2)

运行结果: 

 反过来,json转为python使用json的loads方法。  

代码演示:

data ='[{"name":"张三","age":12},{"name":"王五","age":13},{"name":"李四","age":14}]'
list1=json.loads(data)
print(type(list1))
print(list1)

运行结果:

Pyecharts介绍

  Pyecharts是一个基于Python的开源数据可视化库,它用于创建交互式的图表和图形。Pyecharts可以生成各种类型的图表,包括折线图、柱状图、散点图、饼图等。它提供了丰富的图表样式和配置选项,使用户能够自定义图表的外观和行为。

 打开pyecharts查看官方示例。 

安装pyecharts包 

构建一个基础的折线图

代码:

from pyecharts.charts import Line

line = Line()
# 添加x轴数据
line.add_xaxis(['中国','美国','日本'])
# 添加y轴数据
line.add_yaxis('GDP',[30,20,10])
# 查看图像
line.render()

 运行代码会发现出现一个html结尾的网页文件。

选择一个浏览器打开 。

效果如下图。

配置全局配置项

  通过导入包的更多功能添加一些更多的属性. 

from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts# 引入标题

line = Line()
# 添加x轴数据
line.add_xaxis(['中国','美国','日本'])
# 添加y轴数据
line.add_yaxis('GDP',[30,20,10])

# 设置全局配置项
line.set_global_opts(
    # 设置标题,并且控制位置
    title_opts=TitleOpts(title='GDP展示',pos_left='center',pos_bottom='1%'),
    legend_opts= LegendOpts(is_show=True),
    toolbox_opts= ToolboxOpts(is_show=True),
)
# 查看图像
line.render()

效果图: 

综合案例:

  生成2022年美日印新冠疫情确诊人数折线对比图。

使用工具对数据进行查看 :

  准备好的文件中的json数据如下:

  在abc173网站中对该json数据格式化,直观看出层次结构(点击json视图工具)。

数据处理:

  我们需要获取json数据中的2020年的日期作为x轴,该年的确诊人数作为y轴。

美国数据处理的代码演示:

# 读取json文件
f_us =open('D:/美国.txt','r',encoding='UTF-8')
us_data=f_us.read()
# 去掉开头和结尾不规范字符
us_data=us_data.replace('jsonp_1629344292311_69436(','')
us_data=us_data[:-2]

# json转python字典
us_dict=json.loads(us_data)

# 获取trend key
us_trend=us_dict['data'][0]['trend']

# 获取日期数据,用于x轴,取2020年
us_x_data=us_trend['updateDate'][:314]
# 验证 print(us_x_data)

# 获取确诊人数数据,用于y轴,取2020年
us_y_data=us_trend['list'][0]['data'][:314]
# 验证 print(us_y_data)

   同样的对日本和印度的json数据进行相应的处理。

import json

from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts# 引入标题

# 读取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(','')
us_data=us_data[:-2]

jp_data=jp_data.replace('jsonp_1629350871167_29498(','')
jp_data=jp_data[:-2]

in_data=in_data.replace('jsonp_1629350745930_63180(','')
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=us_dict['data'][0]['trend']
jp_trend=jp_dict['data'][0]['trend']
in_trend=in_dict['data'][0]['trend']

# 获取日期数据,用于x轴,取2020年
us_x_data=us_trend['updateDate'][:314]
jp_x_data=jp_trend['updateDate'][:314]
in_x_data=in_trend['updateDate'][:314]

# 获取确诊人数数据,用于y轴,取2020年
us_y_data=us_trend['list'][0]['data'][:314]
jp_y_data=jp_trend['list'][0]['data'][:314]
in_y_data=in_trend['list'][0]['data'][:314]

# 生成图表
line=Line()

line.add_xaxis(us_x_data) # x轴数据共用
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='2022年美日印新冠疫情确诊人数对比图',pos_left='center',pos_bottom='1%' 
))


# 查看图像
line.render()

# 关闭文件
f_us.close()
f_jp.close()
f_in.close()

运行代码得到下图 。

我们可以看到当前图线的数字太多不太美观,通过设置系列属性来去掉混合数字,ctrl+p查看所有功能找到label_opts。

# 修改y轴数据代码
line.add_yaxis("美国确诊人数",us_y_data,label_opts=LabelOpts(is_show=False))
line.add_yaxis("日本确诊人数",jp_y_data,label_opts=LabelOpts(is_show=False))
line.add_yaxis("印度确诊人数",in_y_data,label_opts=LabelOpts(is_show=False))

可以看到数字消失了,图表清爽了很多。 

  以上内容仅是对 JSON 数据格式转化以及 Pyecharts 库使用的简单演示。希望这样的分享能给您带来帮助,也期待能获得您的投币点赞支持,感谢!

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

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

相关文章

2024 该学前端还是学后端?

2024 该学前端还是学后端? 现状分析pragmatic-drag-and-drop后端开发 现状分析 对于这个问题,个人作为Java后端开发者,那么当然是比较熟悉Java后端开发,从这么久的工作体验来说,因为个人也是比较熟悉Java后端&#xf…

【第19章】Spring Cloud之Gateway自定义Logback配置

文章目录 前言一、内置配置1. 关联依赖2. 内置配置 二、自定义配置1. 日志级别2. 彩色日志3. 自定义配置4. 增加打印语句5. 效果展示 总结 前言 网关层作为我们程序的主入口,有着至关重要的作用,下面我们通过自定义Logback配置增强网关层的日志输出&…

【实用工具】Stirling-PDF入门安装教程: 优质开源的PDF处理工具/编辑工具

文章目录 项目简介功能展示Page Operations 页面操作Conversion Operations 转换操作Security & Permissions 安全与权限Other Operations 其他业务 如何安装并使用Docker RunDocker Compose 项目简介 这是一款使用 Docker 的基于本地托管网络的强大 PDF 操作工具。它能让…

2024年翻译工具新风尚:实时翻译与精准度并进

语言交流的障碍随着全球化的不断深入日益成为连接不同文化和国家的挑战。然而,在科技日新月异的今天,类似谷歌翻译这样的工具正在高速发展这。这次我们来一起探讨深受用户喜欢的翻译工具有哪些。 1.福昕在线翻译 链接直达:https://fanyi.pd…

贷齐乐系统最新版SQL注入(绕过WAF可union select跨表查询)

目录 标题:贷齐乐系统最新版SQL注入(绕过WAF可union select跨表查询) 内容: 一,环境部署 二,源码分析 三,sql注入 总结: [回到顶部](#article_top) 一&am…

Linux使用学习笔记1到2 命令行与shell 基础运维命令

在学习使用ubuntu等各种喜他构建服务器的过程中遇到很多问题,意识到只是跟着网络的教程没办法管理好一个完整的应用部署和运行。遂开始学习linux基本知识,以应对服务器常见问题和软件的使用和维护。 shell 望文生义,大概意思是一个外壳&…

交错字符串[中等]

优质博文:IT-BLOG-CN 一、题目 给定三个字符串s1、s2、s3,请你帮忙验证s3是否是由s1 和s2交错 组成的。 两个字符串s和t交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: s s1 s2 ... sn t t1 t2 …

数据结构---单链表实现

单链表是什么 我的理解是“特殊的数组”,通过访问地址来连接起来 1怎么创建链表 ----通过结构体(成员有存入数据的data和指向下一个节点的地址的指针(结构体指针)next 初始架构---DataType 对应存入数据类型,此处的N…

一款基于Java外卖配送系统,专为多商户入驻设计,包含用户端、商家端、配送端以及总管理后台(附源码)

前言 在当前的外卖配送市场中,软件系统的状态常常面临一些挑战,例如多商户管理复杂性、用户体验不一致、后端服务的稳定性和安全性等。这些痛点不仅影响了商户和用户的满意度,也限制了平台的扩展性和发展潜力。 为了解决这些现状&#xff0…

B站搜索建库架构优化实践

前言 搜索是B站的重要基础功能,需要对包括视频、评论、图文等海量的站内优质资源建立索引,处理来自用户每日数亿的检索请求。离线索引数据的正确、高效产出是搜索业务的基础。我们在这里分享搜索离线架构整体的改造实践:从周期长,…

【论文阅读】BoT-SORT: Robust Associations Multi-Pedestrian Tracking

题目:BoT-SORT: Robust Associations Multi-Pedestrian Tracking 作者:Nir Aharon* Roy Orfaig Ben-Zion Bobrovsky motivation: 作者来得很直接,就说他们用相机运动模型和优化卡尔曼做了个可以解决具有挑战的跟踪问题的算法:BOT-SORT;说他们…

工程数学线性代数(同济大学数学系)第六版(更新中)

第1章 行列式 2 全排列和对换 一、排列及其逆序数 全排列 1个逆序、逆序数 奇排列,偶排列 二、对换 对换:排列中任意两个元素对调 相邻对换:相邻两个元素对换 对换改变排列的奇偶性。 4 行列式的性质 5 行列式按行(列&…

有趣的的rce漏洞复现分析

目录 无字母数字绕过正则表达式 解读代码 解题思路 异或 或 取反 无字母数字绕过正则表达式 首先我们依然是搭建环境&#xff08;环境依然是Ubuntu下部署&#xff0c;和之前的漏洞环境一样&#xff09; <?php error_reporting(0); highlight_file(__FILE__); $code…

<数据集>车间工人、安全帽、安全背心识别<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;3465张 标注数量(xml文件个数)&#xff1a;3465 标注数量(txt文件个数)&#xff1a;3465 标注类别数&#xff1a;3 标注类别名称&#xff1a;[person, helmet, vest] 序号类别名称图片数框数1person346594732helm…

Android 13 GMS 内置壁纸

如图&#xff0c;原生系统上&#xff0c;设备上的壁纸 显示系统内置壁纸。如果没有添加内置壁纸&#xff0c;就显示默认的壁纸。点击进去就是预览页面 扩展下&#xff0c;默认壁纸在 frameworks/base/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png frameworks/b…

云开发微信小程序--即时聊天(单人聊天,多人聊天室)

云开发微信小程序–即时聊天 介绍&#xff1a;本小程序包含欢迎界面&#xff0c;注册&#xff0c;登录&#xff0c;一对一聊天&#xff0c;群聊&#xff0c;好友添加请求验证过程&#xff0c;修改好友备注以及删除好友&#xff0c;退出群聊&#xff0c;特殊角色卡片展示&#…

Android中的EventBus的用法

1. EventBus简介 EventBus是一个优化了的事件发布/订阅模式实现的库&#xff0c;常用于Android程序组件间的通信。它可以简化不同组件之间的通信工作&#xff0c;避免复杂和耦合的依赖关系。EventBus通过事件驱动来降低代码耦合度&#xff0c;提高开发效率和代码清晰性。 2. …

自动化数据采集:Lua爬虫与JSON解析的深度整合

在互联网数据采集领域&#xff0c;自动化技术的应用日益广泛。Lua语言以其轻量级和灵活性&#xff0c;成为开发高效爬虫的理想选择。而JSON作为Web数据交换的标准格式&#xff0c;其解析技术在Lua爬虫开发中占据了核心地位。本文将探讨如何将Lua爬虫与JSON解析深度整合&#xf…

C++学习指南(四)------string

欢迎来到繁星的CSDN。本期内容主要包括字符串string。 一、什么是string&#xff1f; C语言中的string 我们在C语言中已经遇到过字符串了。 那为什么C还要单独的列出来string呢&#xff1f; 尽管这里包的头文件是iostream&#xff0c;但arr数组储存常量字符串123456789的形式仍…

Leetcode - 周赛410

目录 一&#xff0c;3248. 矩阵中的蛇 二&#xff0c;3249. 统计好节点的数目 三&#xff0c;3250. 单调数组对的数目 I dfs记忆化 dfs记忆化1&#xff1a;1改递推 四&#xff0c;3251. 单调数组对的数目 II 一&#xff0c;3248. 矩阵中的蛇 本题就是一道纯模拟题&#x…