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, AxisPointerOptsf_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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang 函数参数的传递方式 值传递,引用传递

基本介绍 我们在讲解函数注意事项和使用细节时&#xff0c;已经讲过值类型和引用类型了&#xff0c;这里我们再系统总结一下&#xff0c;因为这是重难点&#xff0c;值类型参数默认就是值传递&#xff0c;而引用类型参数默认就是引用传递。 两种传递方式&#xff08;函数默认都…

BUG分析以及BUG定位

一般来说bug大多数存在于3个模块&#xff1a; 1、前台界面&#xff0c;包括界面的显示&#xff0c;兼容性&#xff0c;数据提交的判断&#xff0c;页面的跳转等等&#xff0c;这些bug基本都是一眼可见的&#xff0c;不太需要定位&#xff0c;当然也不排除一些特殊情况&#xf…

《cuda c编程权威指南》04 - 使用块和线程索引映射矩阵索引

目录 1. 解决的问题 2. 分析 3. 方法 4. 代码示例 1. 解决的问题 利用块和线程索引&#xff0c;从全局内存中访问指定的数据。 2. 分析 通常情况下&#xff0c;矩阵是用行优先的方法在全局内存中线性存储的。如下。 8列6行矩阵&#xff08;nx,ny&#xff09;&#xff08;…

Kafka-消费者组消费流程

消费者向kafka集群发送消费请求&#xff0c;消费者客户端默认每次从kafka集群拉取50M数据&#xff0c;放到缓冲队列中&#xff0c;消费者从缓冲队列中每次拉取500条数据进行消费。

时序预测 | Python实现NARX-DNN空气质量预测

时序预测 | Python实现NARX-DNN空气质量预测 目录 时序预测 | Python实现NARX-DNN空气质量预测效果一览基本介绍研究内容程序设计参考资料效果一览 基本介绍 时序预测 | Python实现NARX-DNN空气质量预测 研究内容 Python实现NARX-DNN空气质量预测,使用深度神经网络对比利时空气…

PDF文件忘记密码,怎么办?

PDF文件设置密码分为打开密码和限制密码&#xff0c;忘记了密码分别如何解密PDF密码&#xff1f; 如果是限制编辑密码忘记了&#xff0c;我们可以试着将PDF文件转换成其他格式来避开限制编辑&#xff0c;然后重新将文件转换回PDF格式就可以了。 如果因为转换之后导致文件格式…

如何打造属于自己的个人IP?

在当今信息爆炸的时代&#xff0c;个人 IP 已经成为人们在网络世界中的独特标签。无论是在职场上、创业中&#xff0c;还是在社交生活中&#xff0c;拥有个人 IP 的人都能脱颖而出&#xff0c;吸引更多的关注和机会。那么&#xff0c;如何打造属于自己的个人 IP 呢&#xff1f;…

go 如何知道一个对象是分配在栈上还是堆上?

如何判断变量是分配在栈&#xff08;stack&#xff09;上还是堆&#xff08;heap&#xff09;上&#xff1f; Go和C不同&#xff0c;Go局部变量会进行逃逸分析。如果变量离开作用域后没有被引用&#xff0c;则优先分配到栈上&#xff0c;否则分配到堆上。判断语句&#xff1a;…

在外远程NAS群晖Drive - 群晖Drive挂载电脑磁盘同步备份【无需公网IP】

文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 前言 群晖作为专业的数据存储中心&…

如何开启一个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引入…

flask中写一个基础的sqlHelper类

写一个SQLHelper类&#xff1a; from flask_sqlalchemy import SQLAlchemydb SQLAlchemy()class SQLHelper:staticmethoddef add(record):db.session.add(record)return SQLHelper.session_commit()staticmethoddef add_all(records):db.session.add_all(records)return SQLH…

基于dockerfile构建sshd、httpd、nginx、tomcat、mysql、lnmp、redis镜像

一、镜像概述 Docker 镜像是Docker容器技术中的核心&#xff0c;也是应用打包构建发布的标准格式。一个完整的镜像可以支撑多个容器的运行&#xff0c;在Docker的整个使用过程中&#xff0c;进入一个已经定型的容器之后&#xff0c;就可以在容器中进行操作&#xff0c;最常见的…

【面试】某公司记录一次面试题

文章目录 框架类1. Spring boot与 spring 架相比&#xff0c;好在哪里?2. Spring boot以及 Spring MVC 常用注解(如requestingMapping&#xff0c;responseBody 等)3. 常用的java 设计模式&#xff0c;spring 中用到哪些设计模式4. SpringIOC是什么&#xff0c;如何理解5. AOP…

看了那场直播后,我们发起了一个讨论

几天前&#xff0c;我们做了一场直播&#xff0c;关于如何用 Serverless 技术让文化古籍“活过来”。 完整视频进入阿里云云原生视频号看直播回放 背景信息&#xff1a; 通过阿里云函数计算帮助复旦大学特藏中心建立数字图书馆&#xff0c;为用户提供更丰富、更具互动性的古籍浏…

dubbo的高可用

1、zookeeper宕机与dubbo直连 现象&#xff1a;zookeeper注册中心宕机&#xff0c;还可以消费dubbo暴露的服务。 原因&#xff1a; 健壮性 &#xff08;1&#xff09;监控中心宕掉不影响使用&#xff0c;只是丢失部分采样数据. &#xff08;2&#xff09;数据库宕掉后&#x…

怎样选择适合的爬虫ip服务商?

在当今数字化的时代&#xff0c;越来越多的企业和个人需要采集和分析大量的数据来进行市场调研、竞品分析、舆情监测等工作。而为了保护其数据和资源&#xff0c;很多网站采取了反爬虫措施&#xff0c;限制了普通用户和爬虫程序的访问。为了应对这种限制&#xff0c;许多人开始…

opencv-29 Otsu 处理(图像分割)

Otsu 处理 Otsu 处理是一种用于图像分割的方法&#xff0c;旨在自动找到一个阈值&#xff0c;将图像分成两个类别&#xff1a;前景和背景。这种方法最初由日本学者大津展之&#xff08;Nobuyuki Otsu&#xff09;在 1979 年提出 在 Otsu 处理中&#xff0c;我们通过最小化类别内…

手机快充协议

高通:QC2.0、QC3.0、QC3.5、QC4.0、QC5.0、 FCP、SCP、AFC、SFCP、 MTKPE1.1/PE2.0/PE3.0、TYPEC、PD2.0、PD3.0/3.1、VOOC 支持 PD3.0/PD2.0 支持 QC3.0/QC2.0 支持 AFC 支持 FCP 支持 PE2.0/PE1.1 联发科的PE&#xff08;Pump Express&#xff09;/PE 支持 SFCP 在PP…

牛客网Verilog刷题——VL46

牛客网Verilog刷题——VL46 题目解析答案 题目 根据题目提供的双口RAM代码和接口描述&#xff0c;实现同步FIFO&#xff0c;要求FIFO位宽和深度参数化可配置。电路的接口如下图所示。   双口RAM端口说明&#xff1a; 同步FIFO端口说明&#xff1a; 双口RAM代码如下&#xff…

python中数据可视化

1.掷一个D6和一个D10 50000次的结果 die.py from random import randintclass Die:def __init__(self, num_sides6):self.num_sides num_sidesdef roll(self):return randint(1, self.num_sides) die_visual.py from die import Die from plotly.graph_objs import Bar, L…