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

目录

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 = Line()

# 添加 x 轴数据,这里传入一个包含三个国家名称的列表
# x 轴通常表示不同的类别或时间点等
line.add_xaxis(['中国','美国','日本'])

# 添加 y 轴数据,
# 第一个参数是系列名称,这里命名为'GDP'
# 第二个参数是对应的数据列表,表示三个国家的 GDP 值
line.add_yaxis('GDP',[30,20,10])

# 生成 HTML 文件来渲染图表,这样可以在浏览器中查看图像
line.render()

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

选择一个浏览器打开。

效果图:

配置全局配置项:

通过导入包的更多功能添加一些更多的属性,使图表更美观。

from pyecharts.charts import Line  # 从 pyecharts 库中导入 Line 类,用于创建折线图
from pyecharts.options import TitleOpts, LegendOpts, ToolboxOpts  # 导入用于设置标题、图例和工具箱选项的类

# 创建一个折线图对象
line = Line()

# 添加 x 轴数据,这里是三个国家的名称
line.add_xaxis(['中国', '美国', '日本'])

# 添加 y 轴数据,第一个参数是系列名称,这里是'GDP',第二个参数是对应国家的 GDP 值列表(这里只是示例数据)
line.add_yaxis('GDP', [30, 20, 10])

# 设置全局配置项
line.set_global_opts(
    # 设置标题选项
    title_opts=TitleOpts(
        title='GDP展示',  # 设置标题为'GDP展示'
        pos_left='center',  # 设置标题水平位置为居中
        pos_bottom='1%'  # 设置标题距离底部为 1%的位置
    ),
    # 设置图例选项,is_show=True 表示显示图例
    legend_opts=LegendOpts(is_show=True),
    # 设置工具箱选项,is_show=True 表示显示工具箱
    toolbox_opts=ToolboxOpts(is_show=True)
)

# 生成并渲染图表,默认会在当前目录下生成一个 HTML 文件,可以在浏览器中打开查看图表
line.render()

效果图:

综合案例:

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

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

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

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

数据处理:

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

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

import json

# 读取json文件
# 打开位于 'D:/美国.txt' 的文件,以只读模式('r')打开,并指定编码为 'UTF-8'
f_us = open('D:/美国.txt', 'r', encoding='UTF-8')

# 读取文件内容
us_data = f_us.read()

# 去掉开头和结尾不规范字符
# 将文件内容中的字符串 'jsonp_1629344292311_69436(' 替换为空字符串,去除开头不规范部分
us_data = us_data.replace('jsonp_1629344292311_69436(', '')
# 只取字符串的前部分直到倒数第二个字符,去除结尾不规范部分
us_data = us_data[:-2]

# json转python字典
# 使用 json 模块的 loads 函数将处理后的字符串转换为 Python 字典对象
us_dict = json.loads(us_data)

# 获取trend key
# 从字典中获取 'data' 键对应列表的第一个元素中的 'trend' 键对应的值
us_trend = us_dict['data'][0]['trend']

# 获取日期数据,用于x轴,取2020年
# 获取 'trend' 字典中的 'updateDate' 列表的前 314 个元素,作为 x 轴数据(假设这里对应 2020 年的数据长度为 314)
us_x_data = us_trend['updateDate'][:314]
# 验证 print(us_x_data)

# 获取确诊人数数据,用于y轴,取2020年
# 获取 'trend' 字典中的 'list' 列表的第一个元素中的 'data' 列表的前 314 个元素,作为 y 轴数据(假设这里对应 2020 年的数据长度为 314)
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 库使用的简单演示。希望这样的分享能给您带来帮助,也期待能获得您的投币点赞支持,感谢!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Seata】seata的部署和集成

一、部署Seata的tc-server 1.下载 首先我们要下载seata-server包,地址在http://seata.io/zh-cn/blog/download.html 当然,课前资料也准备好了: 2.解压 在非中文目录解压缩这个zip包,其目录结构如下: 3.修改配置 修…

链表 之 无头结点【哨兵位】单向非循环链表【单链表】增删改查 等方法

系列文章目录 🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼 🎉🎉我的C语言初阶合集:C语言初阶合集,希望能…

GCP Cloud Architect exam - PASS

备考指南 推荐视频课程 https://www.udemy.com/course/google-cloud-architect-certifications/?couponCodeKEEPLEARNING 推荐题库 https://www.udemy.com/course/gcp-professional-cloud-architect-exam-practice-tests-2024​/?couponCodeKEEPLEARNING 错题集 http…

CCF-GESP 等级考试 2023年12月认证C++二级真题解析

2023年12月真题 一、单选题(每题2分,共30分) 正确答案:C 考察知识点:变量的定义与使用 解析:变量命名规则:1、只能包括数字、字母和下划线;2、不能以数字开头;3、不能和…

5.学习webpack配置 babel基本配置

babel是一个javascript编译工具,其主要功能是将新版本的JavaScript代码(如es6)转换为旧版本的代码(如es5),以便能够在旧版本的浏览器或环境中运行。一般配合webpack使用。 使用npm i -D babel/core babel/p…

配置搜索无人机

升级ubuntu内核 https://www.bilibili.com/video/BV11X4y1h7qN/?spm_id_from333.337.search-card.all.click 进入四个内核文件并安装 sudo dpkg -i *.deb安装ROS,PX4,XTDrone,QGC https://blog.csdn.net/qq_45493236/article/details/13…

Linux内核蓝牙子系统有什么(9)

接前一篇文章:Linux内核蓝牙子系统有什么(8) 本文内容参考: Linux之蓝牙相关代码浅析 | DDNotes 蓝牙驱动相关代码_蓝牙驱动代码-CSDN博客 linux蓝牙驱动代码阅读笔记_bt-sco.c-CSDN博客 Linux内核的蓝牙子系统架构-CSDN博客 …

22. 仿LISP运算

题目描述 LISP语言唯一的语法就是括号要配对 形如(OP P1 P2 ...),括号内元素由单个空格分割。其中第一个元素OP为操作符,后续元素均为其参数,参数个数取决于操作符类型。注意:参数P1,P2也有可能是另外一个嵌套的(OP P1 P2...),当前…

Axure10

如果还是不行就将字体图标安装在控制面板–字体下 打开原型了之后,icon没有 一定要将字体库放到–》控制面板\外观和个性化\字体 里面

王佩丰24节Excel学习笔记——第十九讲:Indirect函数

【以 Excel2010 系列学习,用 Office LTSC 专业增强版 2021 实践】 【本章技巧】 如果indirect引用出错,首先检查一下引用位置的双引号有没有出错,再检查引用值的位置是否出错,如果是双引号出错,可以使用英文状态下输入…

基于 Ragflow 搭建知识库-初步实践

基于 Ragflow 搭建知识库-初步实践 一、简介 Ragflow 是一个强大的工具,可用于构建知识库,实现高效的知识检索和查询功能。本文介绍如何利用 Ragflow 搭建知识库,包括环境准备、安装步骤、配置过程以及基本使用方法。 二、环境准备 硬件要…

Structured-Streaming初识

一、概览 Structured Streaming是一个基于SparkSQL引擎构建的可扩展且容错的流处理引擎。可以像在静态数据上表达批量计算一样表达流计算。SparkSQL引擎将负责以增量方式连续运行它,并在流数据继续到达时更新最终结果。可以使用Scala、Java、Python或R中的Dataset/…

Gradio全解系列——Additional Features:附加功能(上)

Gradio全解系列——Additional Features:附加功能(上) 前言本篇摘要10. Additional Features:附加功能10.1 队列10.1.1 使用方法10.1.2 配置队列 10.2 流输入输出10.2.1 流输出1. 生成器yield2. 流媒体 10.2.2 流输入1. 流事件2. …

TestMAX/DFT Compiler:时序单元的类型、连接顺序和后DFT优化

相关阅读 TestMAX/DFT Compilerhttps://blog.csdn.net/weixin_45791458/category_12865937.html?spm1001.2014.3001.5482 时序单元的状态 未映射的时序单元(Unmapped Sequential Cell) 在Design Compiler读取了一个RTL设计后,Design Compiler内置的HDL Compiler工…

Cocos Creator 3.8.5 正式发布,更小更快更多平台!

在 Cocos Creator 3.8.5 版本中,我们做了新一轮的优化。 在加载速度、代码裁剪、平台增强等多方面做了优化,提升了开发者体验和游戏性能。 希望能够助 Cocos 开发者们的产品更上一层楼。 一、加载速度优化 1、WASM 模块延迟加载 在早期版本中&#xff0c…

跨语言数据格式标准化在 HarmonyOS 开发中的实践

文章目录 前言数据格式标准化的意义数据传递中的痛点标准化的优势 JSON 与 Protocol Buffers 的比较JSONProtocol Buffers HarmonyOS 跨语言数据传递示例示例代码:定义 Protocol Buffers 消息格式生成 Java 和 C 代码示例代码:Java 端序列化与传递数据C …

【有作图代码】多尺度动力学模型:像“显微镜与望远镜的结合”,揭示微观分子运动与宏观流体流动的奥秘

【有作图代码】多尺度动力学模型:像“显微镜与望远镜的结合”,揭示微观分子运动与宏观流体流动的奥秘 具体实例与推演 假设我们有一个流体系统,其中微观尺度上分子间的相互作用可以通过分子动力学方程描述,而宏观尺度上流体的流…

工具变量笔记

补充知识 简单介绍工具变量 假设 Y i α β D i ϵ i Y_i\alpha\beta D_i\epsilon_i Yi​αβDi​ϵi​, where E ( ϵ i ∣ D i ) 0 E(\epsilon_i\mid D_i)0 E(ϵi​∣Di​)0. 但是通常这个条件不满足。于是假如有这样一个工具变量 Z i Z_i Zi​存在的话,满…

通过 Ansys Electronics Desktop 中的高级仿真优化 IC 设计

半导体行业继续通过日益复杂的集成电路 (IC) 设计突破技术界限。随着工艺节点缩小和电路密度达到前所未有的水平,电磁效应对设备性能和可靠性变得越来越重要。现代 IC 设计面临着来自复杂的布局相关耦合机制、信号完整性问题和功率分布问题的挑战,这些问…

Yocto 项目中的交叉编译:原理与实例

Yocto 项目是一个强大的工具集,它专注于为嵌入式系统生成定制的 Linux 发行版。交叉编译在 Yocto 项目中扮演着核心角色,它使得开发者能够在功能强大的宿主机上构建适用于资源受限目标设备的软件系统。这篇文章将从运行原理、实际案例和工具链组成等角度…