Python入门到精通(九)——Python数据可视化

Python数据可视化

一、JSON数据格式

1、定义

2、python数据和JSON数据转换

二、pyecharts

三、折线图

四、地图

五、动态柱状图


一、JSON数据格式

1、定义

  • JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据
  • JSON本质上是一个带有特定格式的字符串
  • JSON就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互

2、python数据和JSON数据转换

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

二、pyecharts

  • 安装pyecharts

     pip install pyecharts

  • 打开官方画廊:

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

三、折线图

  • 导入模块:from pyecharts.charts import Line
  • 构建图表:line = Line( )
  • 生成图表:line.render( )
  • 全局配置:line.set_global_opts( )

折线图相关配置项

.add_yaxis相关配置选项

.set_global_opts全局配置选项

案例

需求美日印三国确诊人数对比折线图

代码示例

# 导入包
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LabelOpts# 处理数据
f_us = open("F:/学习资料/Python/黑马/资料/可视化案例数据/折线图数据/美国.txt", "r", encoding="utf-8")
us_data = f_us.read()  # 美国的全部内容f_jp = open("F:/学习资料/Python/黑马/资料/可视化案例数据/折线图数据/日本.txt", "r", encoding="utf-8")
jp_data = f_jp.read()  # 日本的全部内容f_in = open("F:/学习资料/Python/黑马/资料/可视化案例数据/折线图数据/印度.txt", "r", encoding="utf-8")
in_data = f_in.read()  # 印度的全部内容
# 去掉不合json规范的开头
us_data = us_data.replace("jsonp_1629344292311_69436(", "")
jp_data = jp_data.replace("jsonp_1629350871167_29498(", "")
in_data = in_data.replace("jsonp_1629350745930_63180(", "")
# 去掉不合json规范的结尾
us_data = us_data[:-2]
jp_data = jp_data[:-2]
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_data = us_dict['data'][0]['trend']
jp_trend_data = jp_dict['data'][0]['trend']
in_trend_data = in_dict['data'][0]['trend']
# 获取日期数据,用于x轴,取2020年(公用)
us_x_data = us_trend_data['updateDate'][:314]  # 到12.31号
# jp_x_data = jp_trend_data['updateDate'][:314]  # 到12.31号
# in_x_data = in_trend_data['updateDate'][:314]  # 到12.31号
# 获取确诊数据,用于y轴,取2020年
us_y_data = us_trend_data['list'][0]['data'][:314]
jp_y_data = jp_trend_data['list'][0]['data'][:314]
in_y_data = in_trend_data['list'][0]['data'][:314]
# 生成图表
line = Line()  # 构建折线图对象
# 添加x轴数据
line.add_xaxis(us_x_data)  # x轴是公用的
# 添加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))# 设置全局选项
line.set_global_opts(# 标题设置title_opts=TitleOpts(title="2020美日印三国确诊人数对比折线图", pos_left="center", pos_bottom="1%")
)
# 调用render方法生成图表
line.render("美日印三国确诊人数对比折线图.html")
# 关闭文件对象
f_us.close()
f_jp.close()
f_in.close()

运行结果

生成一个 美日印三国确诊人数对比折线图.html 文件

四、地图

  • 导入模块:from pyecharts.charts import Map
  • 构建图表:map = Map( )
  • 生成图表:map.render( )
  • 全局配置:map.set_global_opts( )

案例

需求:全国疫情地图

代码示例

# 导入模块
import json
from pyecharts.charts import Map
from pyecharts.options import *# 读取数据文件
f = open("F:/学习资料/Python/黑马/资料/可视化案例数据/地图数据/疫情.txt", "r", encoding="utf-8")
data = f.read()
# 关闭文件
f.close()
# 取到各省数据
# 将字符串json,转换为字典
data_dict = json.loads(data)
# 从字典中取各省份数据
province_data_list = data_dict["areaTree"][0]["children"]
# 组装每个省份和确诊人数为元组,并各个省的数据都封装入列表内
data_list = []  # 绘图所需要的数据列表
for province_data in province_data_list:province_name = province_data["name"] # 省份名称province_confirm = province_data["total"]["confirm"]  # 确诊人数data_list.append((province_name, province_confirm))
# 创建地图对象
map = Map()
# 添加数据
map.add("各省份确诊人数", data_list, "china")
# 设置全局配置,定制分段的视觉映射
map.set_global_opts(title_opts=TitleOpts(title="全国疫情地图"),visualmap_opts=VisualMapOpts(is_show=True,  # 是否显示is_piecewise=True,  # 是否分段pieces=[{"min": 1, "max": 99, "label": "1-99人", "color": "#CCFFFF"},{"min": 100, "max": 990, "label": "100-999人", "color": "#FFFF99"},{"min": 1000, "max": 4999, "label": "1000-4999人", "color": "#FF9966"},{"min": 5000, "max": 9999, "label": "5000-9999人", "color": "#FF6666"},{"min": 10000, "max": 99999, "label": "10000-99999人", "color": "#CC3333"},{"min": 100000, "label": "100000人以上", "color": "#990033"}])
)
# 绘图
map.render("全国疫情地图.html")

运行结果

生成一个 全国疫情地图.html 文件

五、动态柱状图

  • 导入模块:from pyecharts.charts import Bar,Timeline
  • 构建图表:bar= Bar( )
  • 创建时间线:timeline = Timeline( )
  • 生成图表:bar.render( )
  • 标签在右侧:label_opts=LabelOpts(position="right")
  • 反转x轴:bar.reversal_axis( )

案例

需求:动态GDP柱状图

代码示例

# 导入模块
from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import *# 读取数据
f = open("F:/学习资料/Python/黑马/资料/可视化案例数据/动态柱状图数据/1960-2019全球GDP数据.csv", "r", encoding="GB2312")
data_lines = f.readlines()
# 关闭文件
f.close()
# 删除第一条数据
data_lines.pop(0)
# 将数据转换为字典存储,格式为:
# 定义一个字典对象
data_dict = {}
for line in data_lines:year = int(line.split(",")[0])  # 年份country = line.split(",")[1]  # 国家gdp = float(line.split(",")[2])  # gdp数据# 如何判断字典里有没有指定的key?try:data_dict[year].append([country, gdp])except KeyError:data_dict[year] = []data_dict[year].append([country, gdp])
# 创建时间线对象
timeline = Timeline({"theme": ThemeType.LIGHT})
# 排序年份
sorted_year_list = sorted(data_dict.keys())
for year in sorted_year_list:data_dict[year].sort(key=lambda element: element[1], reverse=True)# 取出本年前8名的国家year_data = data_dict[year][0:8]x_data = []y_data = []for country_gdp in year_data:x_data.append(country_gdp[0])  # x轴添加国家y_data.append(country_gdp[1] / 10000000)  # y轴添加gdp数据# 构建柱状图bar = Bar()x_data.reverse()y_data.reverse()bar.add_xaxis(x_data)bar.add_yaxis("GDP(亿)", y_data, label_opts=LabelOpts(position="right"))bar.reversal_axis()# 设置每一年标题bar.set_global_opts(title_opts=TitleOpts(title=f"{year}年全球前8GDP数据"))timeline.add(bar, str(year))# 设置时间线自动播放
timeline.add_schema(play_interval=1000,is_timeline_show=True,is_auto_play=True,is_loop_play=False
)
# 绘图
timeline.render("1960-2019全球GDP前8国家.html")

运行结果

生成一个 1960-2019全球GDP前8国家.html 文件

                                                       想要案例资料可以私信我~

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

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

相关文章

vue项目从后端下载文件显示进度条或者loading

//API接口 export const exportDownload (params?: Object, peCallback?: Function) > {return new Promise((resolve, reject) > {axios({method: get,url: ,headers: {access_token: ${getToken()},},responseType: blob,params,onDownloadProgress: (pe) > {peC…

数据结构2月21日

双向链表: func函数&#xff1a; #include <stdio.h> #include <stdlib.h> …

数据分析-Pandas数据探查初步:离散点图

数据分析-Pandas数据探查初步&#xff1a;离散点图 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff…

若依前后端分离版开源项目学习

前言&#xff1a;vscode中vue代码没有高亮显示&#xff0c;可以下载vetur插件解决&#xff0c;ctrl点击无法跳转函数定义问题&#xff0c;可以下载vue-helper插件解决&#xff1b;idea中ctrl点击函数即可跳转函数定义。 一、登录 1.生成验证码 基本思路&#xff1a; 后端生…

基于HT32的智能家居demo(蓝牙上位机)

参加合泰杯作品的部分展示&#xff0c;基于HT32的智能家居&#xff0c;这里展示灯光的相关控制&#xff0c;是用蓝牙进行的数据透传&#xff0c;参考了一些资料&#xff0c;美化封装了一下之前的上位机界面。 成果展示 点击主界面的蓝牙设置&#xff0c;进行连接&#xff0c;下…

【推荐算法系列六】WideDeep模型

文章目录 参考资料 模型结构模型的记忆能力模型的泛化能力问题 参考资料 见微知著&#xff0c;你真的搞懂Google的Wide&Deep模型了吗&#xff1f;keras实现的代码参考 模型结构 它是由左侧的 Wide 部分和右侧的 Deep 部分组成的。Wide 部分的结构太简单了&#xff0c;就是…

Eslint在Vscode中使用技巧的相关技巧

ps :该文章会详细结论构建一个脚手架遇到的问题&#xff0c;会持续更新&#xff0c;请定时查看 Eslint相关​ 在vscode中使用eslint插件 在vscode中用户配置没有开启eslint.enable 在vscode中工作区配置开启eslint.enable settings.json中没有做eslint相关配置 在编写的vue…

Jenkins参数化构建项目(Git+docker部署+Python+flask项目)

目录 一、概述二、环境三、部署流程3.1 gitee上传代码3.2 jenkins配置3.2.1 Gitee配置3.2.2 SSH配置3.2.3 新建任务 3.3 执行过程3.3.1初始化构建3.3.2 重新提交代码构建 一、概述 使用Jenkins进行CI/CD自动化部署&#xff0c;参数化构建Git代码拉取&#xff0c;docker镜像打包…

开创5G无线新应用:笙科电子5.8GHz 射频芯片

笙科电子(AMICCOM) 5.8GHz A5133射频芯片是一款专门设计用于在5.8GHz频率范围内&#xff08;5725MHz - 5850MHz)进行射频信号处理的集成电路。这些集成电路通常包括各种功能模块&#xff0c;如射频前端、混合器、功率放大器、局部振荡器等&#xff0c;以支持无线通信系统的各种…

3D可视化项目,选择unity3D还是three.js,是时候挑明了。

2023-08-10 23:07贝格前端工场 Hi&#xff0c;我是贝格前端工场&#xff0c;在开发3D可视化项目中&#xff0c;是选择U3D还是three,js时&#xff0c;很多老铁非常的迷茫&#xff0c;本文给老铁们讲清楚该如何选择&#xff0c;欢迎点赞评论分享转发。 一、Unity3D和three.js简…

Android Activity启动模式

文章目录 Android Activity启动模式概述四种启动模式Intent标记二者区别 Android Activity启动模式 概述 Activity 的管理方式是任务栈。栈是先进后出的结构。 四种启动模式 启动模式说明适用场景standard标准模式默认模式&#xff0c;每次启动Activity都会创建一个新的Act…

10W 音频功率放大电路芯片TDA2003,可用于汽车收音机及收录机中作音频功率放大器,内部具有短路保护和过热保护等功能

TDA2003 用于汽车收音机及收录机中作音频功率放大器。 采用 TO220B5 封装形式。 主要特点&#xff1a; ⚫ 内部具有短路保护和过热保护。内部具有地线开路、电源极性接 反和负载泄放电压反冲等保护电路。 ⚫ 输出电流大。 ⚫ 负载电阻可低至 1.6 。 …

Linux:Ansible的常用模块

模块帮助 ansible-doc -l 列出ansible的模块 ansible-doc 模块名称 # 查看指定模块的教程 ansible-doc command 查看command模块的教程 退出教程时候建议不要使用ctrlc 停止&#xff0c;某些shell工具会出现错误 command ansible默认的模块,执行命令&#xff0c;注意&#x…

ARM系列 -- 虚拟化(一)

今天来研究一个有意思的话题&#xff0c;虚拟化&#xff08;virtualization&#xff09;。 开始前&#xff0c;先闲扯一下&#xff0c;最近一个词比较火&#xff0c;“元宇宙&#xff08;Metaverse&#xff09;”。在维基百科里面是这么定义元宇宙的&#xff0c;“The Metaver…

web学习笔记(二十一)

目录 1.构造函数创建对象 1.1规则 1.2 new关键字调用构造函数时&#xff0c;函数内部做了什么事情&#xff1f; 1.3总结 2.混合模式创建对象 3.JavaScript 继承---借助构造函数 4.原型链 1.构造函数创建对象 1.1规则 &#xff08;1&#xff09;构造函数----函数名的首字…

微信小程序page组成部分分析与创建page方法演示

上文 简单讲解并梳理微信小程序默认几个文件和文件夹结构及其作用 我们简述了整个小程序创建之初 几个模块与文件的作用 其中 我们说过 pages 就是放我们所有page界面的 它所有page模块 都是分为四个文件 其中 js 其中包括 页面逻辑 响应式数据 函数 json 文件&#xff0c;界…

DVWA 靶场之 Command Injection(命令执行)middlehigh

对于 middle 难度的 我们直接先看源码 <?phpif( isset( $_POST[ Submit ] ) ) {// Get input$target $_REQUEST[ ip ];// Set blacklist$substitutions array(&& > ,; > ,);// Remove any of the characters in the array (blacklist).$target str_rep…

高防IP简介

高防IP可以防御的有包括但不限于以下类型&#xff1a; SYN Flood、UDP Flood、ICMP Flood、IGMP Flood、ACK Flood、Ping Sweep 等攻击。高防IP专注于解决云外业务遭受大流量DDoS攻击的防护服务。支持网站和非网站类业务的DDoS、CC防护&#xff0c;用户通过配置转发规则&#x…

Eclipse是如何创建web project项目的?

前面几篇描述先后描述了tomcat的目录结构和访问机制&#xff0c;以及Eclipse的项目类型和怎么调用jar包&#xff0c;还有java的main函数等&#xff0c;这些是一些基础问题&#xff0c;基础高清出来才更容易搞清楚后面要说的东西&#xff0c;也就是需求带动学习&#xff0c;后面…

udp丢包大文件传输解决方案

在现代企业的运作中&#xff0c;大容量文件的迅速传输变得极为关键。但是&#xff0c;UDP&#xff08;用户数据报协议&#xff09;在处理大型文件传输时常常遭遇数据包丢失的问题&#xff0c;这不仅影响了传输的效率&#xff0c;也可能对数据的完整性构成威胁。本文将深入分析U…