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.mzph.cn/news/20578.shtml

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

相关文章

sqoop

一、bg 可以在关系型数据库和hdfs、hive、hbase之间导数 导入&#xff1a;从RDBMS到hdfs、hive、hbase 导出&#xff1a;相反 sqoop1 和sqoop2 (1.99.x)不兼容&#xff0c;sqoop2 并没有生产的稳定版本&#xff0c; Sqoop1 import原理(导入) 从传统数据库获取元数据信息&…

2023-08-03 LeetCode每日一题(删除注释)

2023-08-03每日一题 一、题目编号 722. 删除注释二、题目链接 点击跳转到题目位置 三、题目描述 给一个 C 程序&#xff0c;删除程序中的注释。这个程序source是一个数组&#xff0c;其中source[i]表示第 i 行源码。 这表示每行源码由 ‘\n’ 分隔。 在 C 中有两种注释风…

Docker容器技术

目录 1.初识Docker 1.1 为什么使用docker 1.2 Docker技术 1.3.安装Docker 1.4.Docker架构 1.5.配置Docker镜像加速器 2.Docker常用命令 2.1.Docker服务相关的命令 2.2.Docker镜像相关的命令 2.3.Docker容器相关的命令 3. 容器的数据卷 3.1.数据卷的概念和作用 3.2.…

HET-1型多功能二维材料转移平台

HET-1型多功能二维材料转移平台 产品介绍 HET-1型二维转移平台适用于石墨烯、各类过渡金属化合物、黑磷等多种单层及其多层二维材料的精确定位转移及范德瓦尔斯异质结的准确制备&#xff0c;实现了低维材料转移的精确可视化操作。本套转移平台由转移台模块、样品台模块、显微观…

Oracle FETCH子句详解

目录 一、语法 二、oracle等同写法 三、Mysql等同写法 由于oracle不能使用limit&#xff0c;所以用fetch用来限制查询返回的行数。 一、语法 [ OFFSET offset ROWS] FETCH NEXT [ row_count | percent PERCENT ] ROWS [ ONLY | WITH TIES ] 说明&#xff1a; OFFSET…

移远通信首批加入“5G+eSIM计算终端产业合作计划”,助力大屏移动终端全时在线

7月29日&#xff0c;在全球数字娱乐产业盛会 ChinaJoy上&#xff0c;中国联通携手高通公司、GSMA发布了“5GeSIM 计算终端产业合作计划”。 作为全球领先的物联网整体解决方案供应商&#xff0c;移远通信首批加入该计划&#xff0c;副总经理刘明辉受邀参加5GeSIM 计算终端产业合…

常见距离计算的Python实现

常见的距离有曼哈顿距离、欧式距离、切比雪夫距离、闵可夫斯基距离、汉明距离、余弦距离等&#xff0c;用Python实现计算的方式有多种&#xff0c;可以直接构造公式计算&#xff0c;也可以利用内置线性代数函数计算&#xff0c;还可以利用scipy库计算。 1.曼哈顿距离 也叫城市…

java关键词组匹配算法

首先我们将对代码进行基础构思&#xff1a; 一、 创建TrieNode 类 Trie 树的节点类&#xff0c;用于构建 Trie 树。TrieNode 类有以下成员变量&#xff1a; children&#xff1a;一个 Map&#xff0c;用于存储当前节点的子节点&#xff0c;key 是字符&#xff0c;value 是对应…

剑指 Offer 53 - I. !!在排序数组中查找数字 I (考查二分法)

剑指 Offer 53 - I. 在排序数组中查找数字 I 统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums [5,7,7,8,8,10], target 8 输出: 2 示例 2: 输入: nums [5,7,7,8,8,10], target 6 输出: 0 提示&#xff1a; 0 < nums.length < 105 -109 < nums[i] &l…

day49-Todo List(待办事项列表)

50 天学习 50 个项目 - HTMLCSS and JavaScript day49-Todo List&#xff08;待办事项列表&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" co…

Ajax_02学习笔记(源码 + 图书管理业务 + 以及 个人信息修改功能)

Ajax_02 01_Bootstrap框架-控制弹框的使用 代码 <!-- 引入bootstrap.css --> <link href"https://cdn.jsdelivr.net/npm/bootstrap5.2.2/dist/css/bootstrap.min.css" rel"stylesheet"><button type"button" class"btn btn…

nlohmann::json 中文乱码解决方案

// UTF8字符串转成GBK字符串 std::string U2G(const std::string& utf8) {int nwLen MultiByteToWideChar(CP_UTF8, 0, utf8.c_str(), -1, NULL, 0);wchar_t* pwBuf new wchar_t[nwLen 1];//加1用于截断字符串 memset(pwBuf, 0, nwLen * 2 2);MultiByteToWideChar(CP_U…

hadoop 3.1.3集群搭建 ubuntu20

相关 hyper-v安装ubuntu-20-server hyper-v建立快照 hyper-v快速创建虚拟机-导入导出虚拟机 准备 虚拟机设置 采用hyper-v方式安装ubuntu-20虚拟机和koolshare hostnameiph01192.168.66.20h02192.168.66.21h03192.168.66.22 静态IP 所有机器都需要按需设置 sudo vim /e…

C语言技巧 ----------调试----------程序员必备技能

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; &#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382;…

【css】nth-child选择器实现表格的斑马纹效果

nth-child() 选择器可以实现为所有偶数&#xff08;或奇数&#xff09;的表格行添加css样式&#xff0c;even&#xff1a;偶数&#xff0c;odd&#xff1a;奇数。 代码&#xff1a; <style> table {border-collapse: collapse;width: 100%; }th, td {text-align: cente…

MySQL 判断字段是否包含数字或者纯数字

使用mysql原生函数FIND_IN_SET查询包含某个数字 select * from text where find_in_set(1,name) 使用regexp正则匹配纯数字 select * from text where (name REGEXP [^0-9.])0; 当 REGEXP ‘[^0-9.]’ 结果为 0 ,代表为纯数字 当 REGEXP ‘[^0-9.]’ 结果为1 ,代表不为纯数…

kube-state-metrics暴露k8s中的监控指标

kube-state-metrics 是一个用于从 Kubernetes 集群中生成各种资源对象状态指标的工具。 通过Deployment等配置完成安装 https://github.com/kubernetes/kube-state-metrics/tree/main/examples/standard 根据官方给定的配置添加至k8s上 注意需要RBAC授权 启动项 要使 kube…

在C语言中内嵌汇编语言

在C语言中内嵌的汇编指令包含大部分的ARM和Thumb指令&#xff0c;不过其使用与汇编文件中的指令有些不同&#xff0c;存在一些限制&#xff0c;主要有以下几个方面&#xff1a; &#xff08;1&#xff09;不能直接向PC寄存器赋值&#xff0c;程序跳转要使用B或者BL指令&#x…

Promise用法

学习了promise之后&#xff0c;有点懂但让我说又说不出来&#xff0c;参考别人的记录一下。 1.什么是promise&#xff1f; 2.promise解决了什么问题 3.es6 promise语法 &#xff08;1&#xff09;then链式操作语法 &#xff08;2&#xff09;catch的语法 &#xff08;3&#xf…

Git Bash 教程!【不是所有人都会用Git】

我不太会用github...... 写这篇文章希望能顺利...... 【写在前面】介绍一下git bash的复制粘贴的快捷键&#xff0c;以防后续不会&#xff1a; 开始&#xff1a; 首先下一个windows&#xff1a;git for windows(地址&#xff1a;Git - Downloading Package (git-scm.com)) &a…