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

news2024/11/15 13:58:44

案例

【前言:为了巩固之前的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的国家与其gdp
    year_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.coloradmin.cn/o/2146647.html

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

相关文章

Node js介绍

目录 概要**对Node的认识****Node的概念理解****Node和浏览器区别****Node的架构图** **Node的应用场景****Node的安装****安装Node的LTS版本****Node的版本管理工具nvm(了解)** **Node的输入和输出**Node程序传递参数Node的输出 **Node的全局对象****特殊的全局对象****其他的…

C++类与对象深度解析(五):友元机制、内部类与匿名对象的高级应用

文章目录 C类和对象——全面指南前言4. 友元详解4.1 友元的基本概念 4.2 友元函数示例代码:友元函数访问两个类的私有成员输出: 4.3 友元类示例代码:友元类的使用输出: 4.4 友元的特性与限制4.5 友元函数与类的实际应用示例&#…

WAAP解决方案:守护数字时代的安全盾牌

在当今这个数字化、数据驱动的时代,网络安全已成为企业运营中不可或缺的一环。随着Web应用程序和API接口在业务中的广泛应用,其面临的安全威胁也日益复杂多变。为此,WAAP(Web Application and API Protection)解决方案…

JavaEE:网络编程(UDP)

文章目录 UDPUDP的特点UDP协议端格式校验和前置知识校验和具体是如何工作的? UDP UDP的特点 UDP传输的过程类似于寄信. 无连接: 知道对端的IP和端口号就直接进行传输,不需要建立连接.不可靠: 没有确认机制,没有重传机制,如果因为网络故障导致该段无法到达对方,UDP协议也不会…

字符函数 和 字符串函数 的使用与模拟

前言:在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了 ⼀系列库函数,接下来我们就学习⼀下这些函数。 目录 1. 字符函数 1.1 字符分类判断函数 1.2 字符转换函数 1.3 练…

Sui主网升级至V1.33.2

其他升级要点如下所示: #19404: 启用对等节点的共识轮次探测。 #19119: 无符号整数现在支持.to_string()方法,例如10u8.to_string()等同于 b”10".to_string()。 GraphQL #18774: 为GraphQL引入.move名称解…

Vue3.0组合式API:依赖注入provide和inject实现跨层组件的通信

1、Prop 逐级透传问题 通常情况下,当我们需要从父组件向子组件传递数据时,会使用 props。想象一下这样的结构:有一些多层级嵌套的组件,形成了一棵巨大的组件树,而某个深层的子组件需要一个较远的祖先组件中的部分数据…

数字源表测试IC芯片电性能方案

芯片测试作为芯片设计、生产、封装、测试流程中的重要步骤,是使用特定仪器,通过对待测器件DUT(DeviceUnderTest)的检测,区别缺陷、验证器件是否符合设计目标、分离器件好坏的过程。其中直流参数测试是检验芯片电性能的重要手段之一&#xff0…

JAVA国际版同城货运新纪元货拉拉货运车系统小程序源码

🚚国际货运新风尚,同城搬家轻松享 —— 货拉拉货运车系统,全球互联新体验🌍 🌐【开篇:跨越国界的货运新篇章】🌐 在这个全球化的时代,无论是跨国企业还是个人需求,都渴…

Java通信协议——UDP通信协议,模拟聊天室(完整详解,附有代码)

UDP通信协议,模拟聊天室 需求说明 实现客户咨询问题,客服人员答复问题 分析 咨询时,客户是发送方,客服人员是接收方 答复时,客服人员是发送方,客户是接收方,实现思路和咨询时相同 当客户端输入 …

【5G QoS】详解5G QoS端到端工作机制

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。 博客内容主要围绕…

大田上的路径跟踪论文汇总

文章目录 2022Path tracking control method and performance test based on agricultural machinery pose correction(Computers and Electronics in Agriculture)An optimal goal point determination algorithm for automatic navigation of agricult…

4款AI生成PPT工具推荐,提升工作效率

在如今的工作环境中,PPT制作是许多技术人员不可避免的任务,尤其是在汇报、展示技术方案、以及项目进展时。随着AI技术的快速发展,使用AI生成PPT成为了提高效率的一种新趋势。本文将介绍几款适合程序员、技术人员的AI生成PPT工具,帮…

如何用 HAproxy 实施高可用部署 | OceanBase 实践

背景介绍 最近,我们部署了Oceanbase数据库(以下简称OB),并将部分业务迁移至OB中运行。在部署过程中,我们虽然配置了3个OBProxy,但没有为它们设置高可用配置,应用被固定到某一个OBProxy 上&…

通信工程学习:什么是POS无源光分配器

POS:无源光分配器 POS(Passive Optical Splitter,无源光分配器)是无源光网络(Passive Optical Network, PON)中的一个重要组成部分,它位于光线路终端(OLT)和光网络单元&a…

基于Spring Boot的能源管理系统+建筑能耗+建筑能耗监测系统+节能监测系统+能耗监测+建筑能耗监测

介绍 建筑节能监测系统是基于计算机网络、物联网、大数据和数据可视化等多种技术融合形成的一套节能监测系统。 系统实现了对建筑电、水、热,气等能源、资源消耗情况的实时监测和预警、动态分析和评估,为用户建立了科学、系统的节能分析方法&#xff0c…

你天天用微服务还不知道心跳检测机制是什么?

目录标题 1. 心跳检测机制概述2. 心跳检测的具体实现2.1 服务注册与发现示例:Eureka 2.2 心跳包的格式2.3 超时机制 3. 实战中的心跳检测3.1 服务发现与注册中心3.2 定时任务与超时机制3.3 集群管理与协调3.4 故障隔离与恢复 4. 监控与告警5. 具体示例:Z…

制作一个rabbitmq-sdk

目录结构 pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">&l…

VR全景摄影制作中的常见问题及解决方案

随着VR全景摄影技术的普及&#xff0c;越来越多的摄影师和企业开始尝试使用这种方式来展示产品、场景或服务。虽然VR全景摄影有着强大的视觉表现力和沉浸式体验&#xff0c;但在制作过程中也会遇到各种挑战。为了帮助大家更好地掌握VR全景摄影的制作技巧&#xff0c;今天给分享…

STM32 单片机最小系统全解析

STM32 单片机最小系统全解析 本文详细介绍了 STM32 单片机最小系统&#xff0c;包括其各个组成部分及设计要点与注意事项。STM32 最小系统在嵌入式开发中至关重要&#xff0c;由电源、时钟、复位、调试接口和启动电路等组成。 在电源电路方面&#xff0c;采用 3.3V 直流电源供…