Python-Python基础综合案例:数据可视化 - 折线图可视化

版本说明

当前版本号[20230729]。

版本修改说明
20230729初版

目录

文章目录

  • 版本说明
  • 目录
  • 知识总览图
  • Python基础综合案例:数据可视化 - 折线图可视化
    • json数据格式
      • 什么是json
      • json有什么用
      • json格式数据转化
      • Python数据和Json数据的相互转化
    • pyecharts模块介绍
      • 概况
      • 如何查看官方示例
    • pyecharts快速入门
      • 基础折线图
        • pyecharts有哪些配置选项
        • set_global_opts方法
    • 数据处理
    • 创建折线图
      • 导入模块
      • 折线图相关配置项
      • 创建折线图
      • 添加数据
      • .add_yaxis相关配置选项
      • set_global_opts全局配置选项

知识总览图

image-20230729173136363

Python基础综合案例:数据可视化 - 折线图可视化

效果一:2020年印美日新冠累计确诊人数

​ 2020年是新冠疫情爆发的一年, 随着疫情的爆发, 国内外确诊人数成了大家关心的热点, 相信大家都有看过类似的疫情报告. 本案例对印度美国日本三个国家确诊人数的进行了可视化处理, 形成了可视化的疫情确诊人数报告.

image-20230609104059832

效果二:全国疫情地图可视化

image-20230609104123982

效果三:动态GDP增长图

image-20230609104155942

数据来源

本案例数据全部来自 <<百度疫情实时大数据报告>>,及公开的全球各国GDP数据

使用的技术

Echarts 是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可. 而 Python 是门富有表达力的语言,很适合用于数据处理. 当数据分析遇上数据可视化时pyecharts 诞生了.

image-20230609104300087

json数据格式

什么是json

  • JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据
  • JSON本质上是一个带有特定格式字符串

主要功能:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互. 类似于:

  • 国际通用语言-英语
  • 中国56个民族不同地区的通用语言-普通话

json有什么用

​ 各种编程语言存储数据的容器不尽相同,在Python中有字典dict这样的数据类型, 而其它语言可能没有对应的字典。

​ 为了让不同的语言都能够相互通用的互相传递数据,JSON就是一种非常良好的中转数据格式。如下图,以Python和C语言互传数据为例:

image-20230609110322703

json格式数据转化

json格式的数据要求很严格, 下面我们看一下他的要求

# json数据的格式可以是: 
{"name":"admin","age":18} 

# 也可以是:  
[{"name":"admin","age":18},{"name":"root","age":16},{"name":"张三","age":20}] 

Python数据和Json数据的相互转化

# 导入json模块
import json

# 准备符合格式json格式要求的python数据
data = [{"name": "老王", "age": 16}, {"name": "张三", "age": 20}]

# 通过 json.dumps(data) 方法把python数据转化为了 json数据
json_data = json.dumps(data, ensure_ascii=False)
print(type(json_data))
print(f"python数据转化为了json数据的结果:{json_data}")

# 通过 json.loads(data) 方法把json数据转化为了 python数据 
python_data = json.loads(json_data)
print(type(python_data))
print(f"json数据转化为了python数据的结果:{python_data}")

结果如下:(可见json和python里面对元素要求的格式也不一样,一个双引号一个单引号)

image-20230609112037725

注:

通过 json.dumps(data) 方法把python数据转化为了 json数据

data = json.dumps(data)

如果有中文可以带上:ensure_ascii=False参数来确保中文正常转换

通过 json.loads(data) 方法把josn数据转化为了 python列表或字典

data = json.loads(data)

pyecharts模块介绍

​ 如果想要做出数据可视化效果图, 可以借助pyecharts模块来完成

概况

Echarts 是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可. 而 Python 是门富有表达力的语言,很适合用于数据处理.

​ 当数据分析遇上数据可视化时pyecharts 诞生了.

如何查看官方示例

打开官方画廊:

https://gallery.pyecharts.org/#/README

使用在前面学过的pip命令即可快速安装PyEcharts模块

pip install pyecharts

pyecharts快速入门

基础折线图

image-20230609115259501

示例代码:

from pyecharts.charts import Line
line = Line()
line.add_xaxis(["炸鸡", "薯条", "汉堡"])
line.add_yaxis("价格", [45, 33, 23])
line.render()

生成图表:

image-20230609115344959

pyecharts有哪些配置选项

lpyecharts模块中有很多的配置选项, 常用到2个类别的选项:

  • 全局配置选项
  • 系列配置选项

set_global_opts方法

​ 这里全局配置选项可以通过set_global_opts方法来进行配置, 相应的选项和选项的功能如下:

image-20230609144702397

​ 全局配置项能做什么?

  • 配置图表的标题

  • 配置图例

  • 配置鼠标移动效果

  • 配置工具栏

  • 等整体配置项

    ​ 系列配置项,我们在后面构建案例时讲解

数据处理

原始数据格式:

image-20230609150317430

导入模块:

image-20230609150356987

再根据层级,一步步地去获取:

image-20230716151704489

对数据进行整理, 让数据符合json格式:

import json
f_us = open("F:/美国.txt", "r", encoding="UTF-8")//打开文件
us_data = f_us.read()//全部读出来

# 把不符合json数据格式的 "jsonp_1629344292311_69436(" 去掉 ,再赋值回us_data
us_data = us_data.replace("jsonp_1629344292311_69436(", "")

# 把不符合json数据格式的 ");" 去掉,从后往前数去掉最后两个字节
us_data = us_data[:-2]

# 数据格式符合json格式后,对数据进行转化成字典
us_dict = json.loads(us_data)

# 获取美国的疫情数据 
trend_data = us_dict['data'][0]['trend']

# x1_data存放2020年日期数据 
x_data = trend_data['updateDate'][:314]

# y1_data存放2020年人数数据 
y_data = trend_data['list'][0]['data'][:314]

print(x_data)
print(y_data)

创建折线图

导入模块

image-20230609163534246

折线图相关配置项

image-20230609163608521

创建折线图

image-20230609163630167

  • 这里的Line()是构建类对象,我们先不必理解是什么意思,后续在Python高阶中进行详细讲解。
  • 目前我们简单的会用即可

添加数据

image-20230609163715410

.add_yaxis相关配置选项

image-20230609163801942

set_global_opts全局配置选项

.set_global_opts(
	# 设置图标题和位置 
	title_opts=opts.TitleOpts(title="2020年 印🇮🇳美🇺🇸日🇯🇵 累计确诊人数对比图",pos_left="center"), 
	# x轴配置项 
	xaxis_opts=opts.AxisOpts(name=“时间”),    # 轴标题 
	# y轴配置项 
	yaxis_opts=opts.AxisOpts(name=“累计确诊人数”),    # 轴标题 
	# 图例配置项 
	legend_opts=opts.LegendOpts(pos_left=70%),    # 图例的位置 
)

示例代码:

import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LabelOpts, LegendOpts, ToolboxOpts, AxisPointerOpts

f_us = open("F:/美国.txt", "r", encoding="UTF-8")
f_jp = open("F:/日本.txt", "r", encoding="UTF-8")
f_in = open("F:/印度.txt", "r", encoding="UTF-8")

us_data = f_us.read()
jp_data = f_jp.read()
in_data = f_in.read()

us_data = us_data.replace("jsonp_1629344292311_69436(", "")
jp_data = jp_data.replace("jsonp_1629350871167_29498(", "")
in_data = in_data.replace("jsonp_1629350745930_63180(", "")

us_data = us_data[:-2]
jp_data = jp_data[:-2]
in_data = in_data[:-2]

us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)

trendus_data = us_dict['data'][0]['trend']
trendjp_data = jp_dict['data'][0]['trend']
trendin_data = in_dict['data'][0]['trend']

us_x_data = trendus_data['updateDate'][:314]
jp_x_data = trendjp_data['updateDate'][:314]
in_x_data = trendin_data['updateDate'][:314]

us_y_data = trendus_data['list'][0]['data'][:314]
jp_y_data = trendjp_data['list'][0]['data'][:314]
in_y_data = trendin_data['list'][0]['data'][:314]

epidemic_line = Line()  //构建折线图对象
epidemic_line.add_xaxis(us_x_data)  //x轴上的数据是共用的,所以使用一个国家的数据即可
epidemic_line.add_yaxis("美国确诊人数", us_y_data, label_opts=LabelOpts(is_show=False))
epidemic_line.add_yaxis("日本确诊人数", jp_y_data, label_opts=LabelOpts(is_show=False))
epidemic_line.add_yaxis("印度确诊人数", in_y_data, label_opts=LabelOpts(is_show=False))
//label_opts=LabelOpts(is_show=False) 是指不显示标签上的数字,看起来就不会那么杂

epidemic_line.set_global_opts(
    title_opts=TitleOpts(title="2020年美日印确诊人数对比折线图", pos_left="center", pos_bottom="1%"),
    legend_opts=LegendOpts(is_show=True),
    toolbox_opts=ToolboxOpts(is_show=True),
    axispointer_opts=AxisPointerOpts()
)

#调用方法,生成图表
epidemic_line.render()

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

折现图以下:

image-20230609164006615

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

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

相关文章

企业既要用u盘又要防止u盘泄密怎么办?

企业在日常生产生活过程中&#xff0c;使用u盘交换数据是最企业最常用也是最便携的方式&#xff0c;但是在使用u盘的同时&#xff0c;也给企业的数据保密工作带来了很大的挑战&#xff0c;往往很多情况下企业的是通过u盘进行数据泄漏的。很多企业采用一刀切的方式&#xff0c;直…

Flutter环境搭建踩坑集锦

Flutter 背景准备工作先检查一下自己的电脑&#xff0c;看一下是不是满足配置要求下载安装配置环境下载安装JDK下载安装Android studio下载Flutterflutter doctor故障Android license status unknownNetwork resources 故障 后记 背景 发现一个不错的框架Flutter&#xff0c;听…

Dockerfile构建LNMP镜像(yum方式)

目录 Dockerfile构建LNMP镜像 1、建立工作目录 2、编写Dockerfile文件 3、构建镜像 4、测试容器 5、浏览器访问测试&#xff1a; Dockerfile构建LNMP镜像 1、建立工作目录 [roothuyang1 ~]# mkdir lnmp/ [roothuyang1 ~]# cd lnmp/ 2、编写Dockerfile文件 [roothuyang1 …

【第一阶段】kotlin的range表达式

range:范围&#xff1a;从哪里到哪里的意思 in:表示在 !in&#xff1a;表示不在 … :表示range表达式 代码示例&#xff1a; fun main() {var num:Int20if(num in 0..9){println("差劲")}else if(num in 10..59){println("不及格")}else if(num in 60..89…

FFmepg视频解码

1 前言 上一篇文章<FFmpeg下载安装及Windows开发环境设置>介绍了FFmpeg的下载安装及环境配置&#xff0c;本文介绍最简单的FFmpeg视频解码示例。 2 视频解码过程 本文只讨论视频解码。 FFmpeg视频解码的过程比较简单&#xff0c;实际就4步&#xff1a; 打开媒体流获取…

人工智能发展的五个主要技术方向是什么?

人工智能主要分支介绍 通讯、感知与行动是现代人工智能的三个关键能力&#xff0c;在这里我们将根据这些能力/应用对这三个技术领域进行介绍&#xff1a; 计算机视觉(CV) 自然语言处理(NLP) 在 NLP 领域中&#xff0c;将覆盖文本挖掘/分类、机器翻译和语音识别。 机器人 1、…

人工智能与物理学(软体机器人能量角度)的结合思考

前言 好久没有更新我的CSDN博客了&#xff0c;细细数下来已经有了16个月。在本科时期我主要研究嵌入式&#xff0c;研究生阶段对人工智能感兴趣&#xff0c;看了一些这方面的论文和视频&#xff0c;因此用博客记录了一下&#xff0c;后来因为要搞自己的研究方向&#xff0c;就…

vscode 第一个文件夹在上一层文件夹同行,怎么处理

我的是这样的 打开终端特别麻烦 解决方法就是 打开vscode里边的首选项 进入设置 把Compact Folders下边对勾给勾掉

【工具使用】git基础操作1

目录 一.拉取git代码1.首次拉取命令2.使用图形化拉取代码3.Idea 开发工具拉取代码 二.查看当前状态1.查看在你上次提交之后是否有对文件进行再次修改 三.创建分支3.1.创建分支3.2.创建分支并切换至分支3.3.提交分支至远程仓 远程没有自动创建 四.查看分支4.1.查看本地分支 当前…

如何开启一个java微服务工程

安装idea IDEA常用配置和插件&#xff08;包括导入导出&#xff09; https://blog.csdn.net/qq_38586496/article/details/109382560安装配置maven 导入source创建项目 修改项目编码utf-8 File->Settings->Editor->File Encodings 修改项目的jdk maven import引入…

偶数科技发布实时湖仓数据平台Skylab 5.3版本

近日&#xff0c; 偶数发布了最新的实时湖仓数据平台 Skylab 5.3 版本。Skylab包含七大产品&#xff0c;分别为云原生分布式数据库 OushuDB、数据分析与应用平台 Kepler、数据资产管理平台 Orbit、自动化机器学习平台 LittleBoy、数据工厂 Wasp、数据开发与调度平台 Flow、系统…

2023年人工智能技术与智慧城市发展白皮书

人工智能与智慧城市是当前热门的话题和概念&#xff0c;通过将人工智能技术应用在城市管理和服务中&#xff0c;利用自动化、智能化和数据化的方式提高城市运行效率和人民生活质量&#xff0c;最终实现城市发展的智慧化&#xff0c;提升城市居民的幸福感。 AI技术在城市中的应…

《金融数据保护治理白皮书》发布(137页)

温馨提示&#xff1a;文末附完整PDF下载链接 导读 目前业界已出台数据保护方面的治理模型&#xff0c;但围绕金融数据保护治理的实践指导等尚不成熟&#xff0c;本课题围绕数据保护治理的金融实践、发展现状&#xff0c;探索和标准化相关能力要求&#xff0c;归纳总结相关建…

【JAVA】正则表达式是啥?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言正则表达式正则表达式语法正则表达式的特点捕获组实例 前言 如果我们想要判断给定的字符串是否符合正则表达式的过滤逻辑&#xff08;称作“匹配”&#xff09;&#xff0c…

设计模式之中介者模式

中介者模式 用一个中介对象来封装一系列的对象交互。中介者使得各对象不需要显示地相互引用&#xff0c;从而使其耦合松散&#xff0c;而且可以独立地改变他们之间的交互。 电脑主板的功能就类似于一个中介者 经典中介者模式UML 例子 经典的中介者模式 package com.tao.Ya…

485modbus转profinet网关连三菱变频器modbus通讯触摸屏监控

本案例介绍了如何通过485modbus转profinet网关连接威纶通与三菱变频器进行modbus通讯。485modbus转profinet网关提供了可靠的连接方式&#xff0c;使用户能够轻松地将不同类型的设备连接到同一网络中。通过使用这种网关&#xff0c;用户可以有效地管理和监控设备&#xff0c;从…

2023网络安全学习路线 非常详细 推荐学习

首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题 1、打基础时间太长 学基础花费很长时间&#xff0c;光语言都有几门&#xff0c;有些人会倒在学习 linux 系统及命令的路上&#xff0c;更多的人会倒在学习语言上&#xff1b; 2、知识点掌握程度不清楚 对于网络安…

zabbix

ZABBIX 安装 Zabbix z-sever yum list | grep nginx # 查看 nginx 版本 &#xff0c;这里使用 1.20 nginx.x86_64 1:1.20.1-10.el7 epel yum install -y nginx# 安装 php https://webtatic.com/packages/php72/ # 源的官…

爬虫007_python中的输出以及格式化输出_以及输入---python工作笔记025

首先看输出 输出这里,注意不能直接上面这样,18需要转换成字符串 可以看到python中这个字符串和数字一起的时候,数字要转换一下成字符串. 然后这里要注意%s 和%d,这个s指的是字符串,d指的是数字 注意后面的内容前面要放个% ,然后多个参数的话,那么这里用(),里面用,号隔开 然…

面向对象程序三大特性一:多态(超详细)

目录 1.重写 1.1基本语法规则 1.2规则深化 1.3重写与重载的区别 2.向上转型 2.1简单介绍 2.3向上转型的作用 3.向下转型 3.1介绍 3.2instanceof 基本介绍 4.多态 4.1多态实现条件 4.2避免在构造方法中调用重写的方法 1.重写 重写 (override) &#xff1a;也称为覆…