Python基础(六)——PyEcharts数据可视化初级版

案例

【前言:为了巩固之前的Python基础知识(一)到(五),并为后续使用Python作为数据处理的好帮手,我们一起来看几个例子】

使用工具:Echarts

  • Echarts 是一个由百度开源的数据可视化,而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。https://pyecharts.org
    第三方包pyecharts就是echarts的python接口,方便python用户开发。

  • json:是一种轻量级的数据交互格式,本质上是一个带有特定格式的字符串,是在各种编程语言中流通的数据格式。

    其格式可理解为:python数据类型的字典或元素为字典的列表

    import json
    # 将内容转换为json格式
    data = [{"name":"米","age":12},{"name":"面","age":22},{"name":"粥","age":18}]
    # 其中ensure_ascii = False可以省略,其作用是不使用ASCII码将内容输出,而是直接将内容显示,可使中文正常显示
    json_str = json.dumps(data, ensure_ascii = False)
    print(json_str)# 将json格式还原为列表或字典
    py_type = json.loads(data)
    print(py_type)
    
    代码作用
    json.dumps()将内容转换为json格式
    json.loads()将json格式转换为python数据类型

    pyecharts中文使用手册:https://pyecharts.org/#/zh-cn/

    pyecharts画廊:https://gallery.pyecharts.org/

    常用工具网站:https://www.ab173.com/

    配置类型

  • 全局配置:使用set_global_opts方法,详细内容查看官方使用手册

  • 局部配置:

一、折线图数据可视化

# 构建基础折线图
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LegendOpts, ToolboxOpts, VisualMapOpts, TooltipOpts, LabelOpts
# 得到折线图对象
line = Line()
# 添加x轴
line.add_xaxis(["中国", "美国", "德国"])
# 添加y轴,注意:此处数据均为测试而虚构
line.add_yaxis("GDP", [30, 20, 10], label_opts=LabelOpts(is_show=False))
# 全局配置
line.set_global_opts(title_opts=TitleOpts(is_show=True, title="GDP显示", pos_left="center", pos_bottom="1%"),legend_opts=LegendOpts(is_show=True),toolbox_opts=ToolboxOpts(is_show=True),visualmap_opts=VisualMapOpts(is_show=True),tooltip_opts=TooltipOpts(is_show=True)
)
# 生成图表
line.render()

折线图数据可视化

二、地图可视化

from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts
map = Map()
data = [ # 注意数据需要以元组形式使用,注意:此处数据均为测试而虚构("北京市", 100),("上海市", 90),("广东省", 80),("台湾省", 70),
]
map.add("地图", data, "china")
map.set_global_opts(visualmap_opts=VisualMapOpts(is_show=True, # 是否显示is_piecewise=True,# 是否分段pieces=[{"min":1, "max":49, "lable":"1-49", "color":"#CCFFFF"},{"min":50, "max":79, "lable":"50-79", "color":"#FFFF99"},{"min":80, "max":89, "lable":"80-89", "color":"#FF9966"},{"min":90, "max":100, "lable":"90-100", "color":"#CC3333"},])
)
map.render()

地图可视化

三、动态柱状图可视化

from pyecharts.options import *
from pyecharts.charts import Timeline, Bar
from pyecharts.globals import ThemeType
# 注意:此处数据均为测试而虚构
bar1 = Bar()
bar1.add_xaxis(["中国", "美国", "英国"])
bar1.add_yaxis("GDP", [35, 25, 10], label_opts=LabelOpts(  # 将y轴上显示数值在图形右侧position="right"
))
bar1.reversal_axis() # 反转xy轴
bar2 = Bar()
bar2.add_xaxis(["中国", "美国", "英国"])
bar2.add_yaxis("GDP", [45, 10, 25], label_opts=LabelOpts(  # 将y轴上显示数值在图形右侧position="right"
))
bar2.reversal_axis() # 反转xy轴# 创建时间线
timeline = Timeline({"theme":ThemeType.LIGHT} # 设置全局主题颜色
)
timeline.add(bar1, "2022年GDP")
timeline.add(bar2, "2023年GDP")
# 设置自动播放
timeline.add_schema(play_interval=1000, # 自动播放时间间隔,单位毫秒is_timeline_show=True, # 自动播放时候是否显示时间线is_auto_play=True, # 是否自动播放is_loop_play=True # 是否循环播放
)
# 通过时间线绘制
timeline.render()

动态柱状图可视化

科学计数法表示的数据可以使用float()强制类型转换为数值

from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType# 读取数据
f = open("D:/test.csv", 'r', encoding="UTF-8")
"""
原数据存储格式
年份,国家,gdp
年份,国家,gdp
年份,国家,gdp
年份,国家,gdp
…………
"""
# 按行读取所有数据并存为列表
data_lines = f.readlines()
# 关闭文件
f.close()
# 删除第一条数据,本质上是清除多余数据
data_lines.pop(0)
# 定义一个空字典对象,为格式化存储数据做准备
data_dict = {}
"""
{年份1: [[国家,gdp], [国家,gdp],……],
年份2: [[国家,gdp], [国家,gdp],……],
年份3: [[国家,gdp], [国家,gdp],……],……}
"""
for line in data_lines: # 根据逗号分割数据,并分别存储year = int(line.split(",")[0])  # 年份country = line.split(",")[1]    # 国家gdp = line.split(",")[2]        # gdp# 判断字典中是否有指定的年份key,将同一年份下所有国家和gdp数据对应存储try: # 有可能出现异常的语句data_dict[year].append([country, gdp])except KeyError as e: # 如果出现该异常,则证明该年份不存在data_dict[year] = [] # 新建该年份key的value(数据类型为列表)data_dict[year].append([country, gdp]) # 将[国家,gdp]列表作为一个元素追加到数据类型为列表的value中# 创建时间线对象
timeline = Timeline({"theme": ThemeType.Light} # 设置主题颜色
)# 由于字典的无序性,需要手动排序年份
sorted_year_list = sorted(data_dict.keys())
# 根据gdp从大到小排序
for year in sorted_year_list:data_dict[year].sort(key=lambda element: element[1], reverse=True)# 取出每年份gdp前8的国家与其gdpyear_data = data_dict[year][:8]x_data = []y_data = []for country_gdp in year_data: # 将国家赋值给x轴,gdp赋值给y轴x_data.append(country_gdp[0])y_data.append(country_gdp[1])# 构建柱状图bar = Bar()bar.add_xaxis("国家", x_data)bar.add_yaxis("GDP(元)", y_data,  label_opts=LabelOpts(position="right"))# 反转xy轴bar.reversal_axis()bar.set_global_opts(title_opts=TitleOpts(title=f"{year}年全球GDP前8数据"))timeline.add(bar, str(year))# 设置时间线自动播放
timeline.add_schema(play_interval=1000,is_timeline_show=True,is_loop_play=True,is_auto_play=True
)
# 通过时间线绘制
timeline.render("全球GDP前8国家")

记录学习过程的笔记,欢迎大家一起讨论,会持续更新

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

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

相关文章

[2025]医院健康陪诊系统(源码+定制+服务)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

【电路笔记】-运算放大器比较器

运算放大器比较器 文章目录 运算放大器比较器1、概述2、表示2.1 同相比较器2.2 反相比较器3、临界点转换4、施密特触发器4.1 同相触发器4.2 反相触发器4.3 应用5、总结1、概述 在前面的大多数运算放大器文章中,电路都有一个到反相输入的反馈环路。 这种设计是最常见的,因为它…

基于SpringBoot+Vue的企业会议室预定管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

Gin渲染

HTML渲染 【示例1】 首先定义一个存放模板文件的 templates文件夹&#xff0c;然后在其内部按照业务分别定义一个 posts 文件夹和一个 users 文件夹。 posts/index.tmpl {{define "posts/index.tmpl"}} <!DOCTYPE html> <html lang"en">&…

shell指令及笔试题

一&#xff1a;linux基本指令考察 创建文件&#xff0c;直接在本目录的上级目录下创建一个名为dir1的文件夹&#xff0c;并在dir1文件夹下创建一个名为file1的文件 答&#xff1a;本目录的上级目录下创建一个名为dir1的文件:mkdir ../dir1 在dir1文件夹下创建一个名为file1的…

【SQL】百题计划:SQL内置函数“LENGTH“的使用

【SQL】百题计划-20240912 方法一&#xff1a; Select tweet_id from Tweets where LENGTH(content) > 15;– 方法二&#xff1a; Select tweet_id from Tweets where CHAR_LENGTH(content)> 15;

初始c++:入门基础(完结)

打字不易&#xff0c;留个赞再走吧~~~ 目录 一函数重载二引用1 引⽤的概念和定义2引⽤的特性3引⽤的使⽤三inline四nullptr 一函数重载 C⽀持在同⼀作⽤域中出现同名函数&#xff0c;但是要求这些同名函数的形参不同&#xff0c;可以是参数个数不同或者 类型不同。这样C函数调⽤…

HTB-Blue(永恒之蓝漏洞复现)

前言 各位师傅大家好&#xff0c;我是qmx_07&#xff0c;今天给大家讲解Blue靶机 渗透过程 信息搜集 服务器开放了smb服务&#xff0c;漏洞探测显示 具有ms17_010(永恒之蓝漏洞) 利用永恒之蓝 搜索永恒之蓝漏洞 use使用永恒之蓝漏洞 rhost //对方主机 lhost //回连主机 …

一种简单的过某宝验证码的方式(仅做学习使用)

开篇 今天介绍一种简单的过某宝验证码的方式&#xff0c;用的是自动化&#xff0c;这样对不会js逆向的小白非常友好&#xff0c;只需要用到selenium框架就能轻松过某宝验证码&#xff0c;即模拟人的操作对滑块进行滑动。 但是首先还是需要训练验证码和标题 训练前&#xff1a…

心觉:成功学就像一把刀,有什么作用关键在于使用者(二)

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作174/1000天 上一篇文章讲了成功学到底是个啥 是如何起作用的 为什么有些人觉得没有用&#xff1f; 今天我们再展开来剖析一下这…

openssl 生成多域名 多IP 的数字证书

openssl.cnf 文件内容&#xff1a; [req] default_bits 2048 distinguished_name req_distinguished_name copy_extensions copy req_extensions req_ext x509_extensions v3_req prompt no [req_distinguished_name] countryName CN stateOrProvinceName GuangDong l…

Electron 安装包 asar 解压定位问题实战

背景 在开发 Electron 过程中&#xff0c;我们想知道 Electron 打包的最终形态是什么样的&#xff0c;以便我们能更好的理解 Electron 打包的过程&#xff0c;以及逆向来快速追踪一些问题&#xff0c;例如下面这个报错&#xff0c;以前这类报错都是靠猜&#xff0c;现在则可以…

使用 VSCode 在 Python 中创建项目环境

了解如何管理 Python 项目的不同环境&#xff0c;欢迎来到雲闪世界。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 介绍 创建数据科学项目非常简单。如今&#xff0c;有了众多资源&#xff0c;您只需选择开发工具并启动项目即可。 除了多个人工智能机…

JDBC 编程

目录 JDBC 是什么 JDBC 的工作原理 JDBC 的使用 引入驱动 使用 常用接口和类 Connection Statement ResultSet 使用总结 JDBC 是什么 JDBC&#xff08;Java Database Connectivity&#xff09;&#xff1a;Java数据库连接&#xff0c;是一种用于执行 SQL 语句的Java…

git学习【持续更新中。。。】

git学习【持续更新中。。。】 文章目录 git学习【持续更新中。。。】一、Git基本操作1.创建本地仓库2.配置本地仓库1.局部配置2.全局配置 3.认识工作区、暂存区、版本库4.添加文件5.修改文件6.版本回退7.撤销修改8.删除文件 二、Git分支管理1.理解分支2.创建、切换、合并分支3.…

AI 时代,大模型产业落地的八大思考

引言 在人工智能领域&#xff0c;大模型技术正逐渐成为推动行业进步的关键力量。随着技术的发展&#xff0c;大模型不仅在学术界引起了广泛的关注&#xff0c;也在产业界展现出巨大的应用潜力。然而&#xff0c;如何将这些强大的模型有效地应用到实际产业中&#xff0c;仍然是…

解决:Vue 中 debugger 不生效

目录 1&#xff0c;问题2&#xff0c;解决2.1&#xff0c;修改 webpack 配置2.2&#xff0c;修改浏览器设置 1&#xff0c;问题 在 Vue 项目中&#xff0c;可以使用 debugger 在浏览器中开启调试。但有时却不生效。 2&#xff0c;解决 2.1&#xff0c;修改 webpack 配置 通…

MySQL权限控制(DCL)

我的mysql里面的一些数据库和一些表 基本语法 1.查询权限 show grants for 用户名主机名;例子1&#xff1a;查询权限 show grants for heima%;2.授予权限 grant 权限列表 on 数据库名.表名 to 用户名主机名;例子2&#xff1a; 授予权限 grant all on itcast.* to heima%;…

Android Studio Menu制作

文章目录 一、创建菜单在Activity上新建onCreateOptionsMenu新建menu目录及资源文件新建Menu一级菜单在Activity上加载Menu测试效果 二、菜单点击事件 一、创建菜单 在Activity上新建onCreateOptionsMenu Overridepublic boolean onCreateOptionsMenu(Menu menu) {return supe…

Pytest配置文件pytest.ini如何编写生成日志文件?

1、新建pytest.ini文件 [pytest] log_clitrue log_leveLNOTSET log_format %(asctime)s %(levelname)s %(message)s %(filename)s %(funcName)s %(lineno)d log_date_format %Y-%m-%d %H:%M:%Slog_file ./logdata/log.log log_file_level info log_file_format %(asctime…