Python-动态柱状图可视化

柱状图

  • 1.基础柱状图
    • 1.1通过Bar构建基础柱状图
    • 1.2反转x轴,y轴
    • 1.3数值标签在右侧
    • 1.4总结
  • 2.基础时间柱状图
    • 2.1掌握基础的时间线配置动态图表
    • 2.2创建时间线
    • 2.3自动播放
    • 2.4时间线设置主题
    • 2.5总结
  • 3.GDP动态柱状图绘制
    • 3.1掌握列表的sort方法并配合配合lambda匿名函数完成列表排序
    • 3.2处理数据
    • 3.3最终结果

1.基础柱状图

1.1通过Bar构建基础柱状图

# 导入包
from pyecharts.charts import Bar
from pyecharts.options import *
# 构建柱状图对象
bar = Bar()
# 添加x轴数据
bar.add_xaxis(["中国","美国","英国"])
# 添加y轴数据
bar.add_yaxis("GDP",[30,20,10])
#绘图
bar.render("基础柱状图.html")

在这里插入图片描述

1.2反转x轴,y轴

# 导入包
from pyecharts.charts import Bar
from pyecharts.options import *
# 构建柱状图对象
bar = Bar()
# 添加x轴数据
bar.add_xaxis(["中国","美国","英国"])
# 添加y轴数据
bar.add_yaxis("GDP",[30,20,10])
# 反转x轴,y轴
bar.reversal_axis()
#绘图
bar.render("基础柱状图.html")

在这里插入图片描述

1.3数值标签在右侧

# 导入包
from pyecharts.charts import Bar
from pyecharts.options import *
# 构建柱状图对象
bar = Bar()
# 添加x轴数据
bar.add_xaxis(["中国","美国","英国"])
# 添加y轴数据
bar.add_yaxis("GDP",[30,20,10],label_opts=LabelOpts(position="right"))
# 反转x轴,y轴
bar.reversal_axis()
#绘图
bar.render("基础柱状图.html")

在这里插入图片描述

1.4总结

  • 通过Bar()构建一个柱状图对象
  • 和折线图一样,通过add_xaxis()和add_yaxis()添加x和y轴数据
  • 通过柱状图对象的:reversal_axis(),反转x和y轴
  • 通过label_opts=LabelOpts(position=“right”)设置数值标签在右侧显示

2.基础时间柱状图

2.1掌握基础的时间线配置动态图表

  • Timeline()-时间线
    • 如果说一个Bar、Line对象是一张图表的话,时间线就是创建一维的x轴,轴上每一个点就是一个图表对象

2.2创建时间线

# 导入包
from pyecharts.charts import Bar,Timeline
from pyecharts.options import *
# 构建柱状图
bar1 = Bar()
# 添加x轴数据
bar1.add_xaxis(["中国","美国","英国"])
# 添加y轴数据
bar1.add_yaxis("GDP",[30,20,10])
# 反转x轴y轴
bar1.reversal_axis()
bar2 = Bar()
bar2.add_xaxis(["中国","美国","英国"])
bar2.add_yaxis("GDP",[50,30,20])
bar2.reversal_axis()
# 创建时间线
timeline = Timeline()
# timeline对象添加bar柱状图
timeline.add(bar1,"2021年GDP")
timeline.add(bar2,"2022年GDP")
# 通过时间线绘图
timeline.render("基础时间柱状图-时间线.html")

在这里插入图片描述

2.3自动播放

# 导入包
from pyecharts.charts import Bar,Timeline
from pyecharts.options import *
from pyecharts.globals import *
# 构建柱状图
bar1 = Bar()
# 添加x轴数据
bar1.add_xaxis(["中国","美国","英国"])
# 添加y轴数据
bar1.add_yaxis("GDP",[30,20,10],label_opts=LabelOpts(position="right"))
# 反转x轴y轴
bar1.reversal_axis()
bar2 = Bar()
bar2.add_xaxis(["中国","美国","英国"])
bar2.add_yaxis("GDP",[50,30,20],label_opts=LabelOpts(position="right"))
bar2.reversal_axis()
# 创建时间线
timeline = Timeline()
# timeline对象添加bar柱状图
timeline.add(bar1,"2021年GDP")
timeline.add(bar2,"2022年GDP")
# 设置自动播放
timeline.add_schema(play_interval=1000, # 自动播放的时间间隔,单位毫秒is_timeline_show=True, # 是否在自动播放的时候,显示时间线is_auto_play=True, # 是否自动播放is_loop_play=True # 是否循环播放
)
# 通过时间线绘图
timeline.render("基础时间柱状图-时间线.html")

在这里插入图片描述
在这里插入图片描述

2.4时间线设置主题

# 导入包
from pyecharts.charts import Bar,Timeline
from pyecharts.options import *
from pyecharts.globals import *
# 构建柱状图
bar1 = Bar()
# 添加x轴数据
bar1.add_xaxis(["中国","美国","英国"])
# 添加y轴数据
bar1.add_yaxis("GDP",[30,20,10],label_opts=LabelOpts(position="right"))
# 反转x轴y轴
bar1.reversal_axis()
bar2 = Bar()
bar2.add_xaxis(["中国","美国","英国"])
bar2.add_yaxis("GDP",[50,30,20],label_opts=LabelOpts(position="right"))
bar2.reversal_axis()
# 创建时间线
timeline = Timeline({"theme":ThemeType.DARK})
# timeline对象添加bar柱状图
timeline.add(bar1,"2021年GDP")
timeline.add(bar2,"2022年GDP")
# 设置自动播放
timeline.add_schema(play_interval=1000, # 自动播放的时间间隔,单位毫秒is_timeline_show=True, # 是否在自动播放的时候,显示时间线is_auto_play=True,is_loop_play=True
)
# 通过时间线绘图
timeline.render("基础时间柱状图-时间线.html")

在这里插入图片描述

2.5总结

  • 时间线
    在这里插入图片描述
  • 自动播放
    在这里插入图片描述
  • 如何设置主题 timeline = Timeline({“theme”: ThemeType.LIGHT})
    在这里插入图片描述

3.GDP动态柱状图绘制

3.1掌握列表的sort方法并配合配合lambda匿名函数完成列表排序

如下嵌套列表,要求对外层表进行排序,排序依据是内层表的第二个元素数字
方法1:

# 定义列表
my_list = [["a",3],["b",5],["c",1]]
# 定义排序方法
def choose_sort_key(element):return element[1]
my_list.sort(key=choose_sort_key,reverse=True)
my_list.sort(key=lambda element: element[1],reverse=True)
print(my_list)
# 结果
[['b', 5], ['a', 3], ['c', 1]]

方法2:配合lmbda函数完成

my_list = [["a",3],["b",5],["c",1]]
my_list.sort(key=lambda element: element[1],reverse=True)
print(my_list)
# 结果
[['b', 5], ['a', 3], ['c', 1]]

3.2处理数据

# 读取数据
f = open("D:/1960-2019全球GDP数据.csv","r",encoding="GB2312")
data_lines = f.readlines()
# 关闭文件
f.close()
# 删除文件开头
data_lines.pop(0)
# 将数据转换为字典存储,格式为:
# {年份: [[国家,GDP],[国家,GDP]...],年份:[[国家,GDP],[国家,GDP]...]...}
# {1960:[[美国,GDP],[国家,GDP]...],1961:[[美国,GDP],[国家,GDP]...]...}
# 定义一个字典对象
data_dict = {}
for line in data_lines:year = int(line.split(",")[0])  # 年份country = line.split(",")[1]    # 国家gdp = float(line.split(",")[2]) # gdp数据# 如何判断字典里面有没有key值?# 初始data_dict[year]会报错,因为对应的key没有数值,通过异常捕获来给data_list定义一个空列表,后续追加值进去。try:data_dict[year].append([country,gdp]) except KeyError:data_dict[year] = []  # year是空列表存进去的data_dict[year].append([country,gdp])
# 创建时间对象
timeline = Timeline({"theme":ThemeType.LIGHT})
# 排序年份
sorted_year_list = sorted(data_dict.keys())
# for循环,从1960年开始
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]/100000000)  # y轴添加gdp数据# 构建柱状图bar = Bar()x_data.reverse()  # 反转国家,让GDP最高的排在最上面y_data.reverse()  # 同步反转GDP数据bar.add_xaxis(x_data)bar.add_yaxis("GDP亿",y_data,label_opts=LabelOpts(position="right")) # y轴数据,标签在右# 反转x轴y轴bar.reversal_axis()# 设置每一年的图表的标题bar.set_global_opts(title_opts=TitleOpts(title=f"{year}年全球前8GDP数据"))timeline.add(bar,str(year))
# for循环每一年的的数据,基于每一年的数据,创建每一年的bar对象
# 在for中,将每一年的bar对象添加到时间线中
# 设置时间线自动播放
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")

3.3最终结果

在这里插入图片描述

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

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

相关文章

【数据库系统概论】第5章-数据库完整性

文章目录 引言5.1 实体完整性5.2 参照完整性5.3 用户定义的完整性5.4 完整性约束命名子句5.6 触发器 引言 数据库的完整性是指数据的正确性和相容性。 正确性:符合现实语义、反映当前实际情况。性别必须为男或女。 相容性:数据库同一对象在不同关系表中…

115基于matlab的用于铣削动力学建模的稳定性叶瓣图分析(stablity lobe)

基于matlab的用于铣削动力学建模的稳定性叶瓣图分析(stablity lobe),程序已调通,可直接运行。 115matlab铣削动力学 (xiaohongshu.com)

生活常识-如何开社保证明(四川)

下载并打开天府市民云APP 注册后登陆 点击社保服务 点击社保证明 点击【四川省社会保险个人社保证明名(近24个月)】 点击下载 下载后点击【QQ发送给好友,然后发送给自己的电脑设备(我的电脑)】

数据类型-变量-内存四区-指针

1、内存四区 1.1、数据类型的本质 1)数据类型基本概念 类型是对数据的抽象类型相同的数据具有相同的表示形式、存储格式、相关的操作程序中使用的数据必定属于某种数据类型数据类型和内存 有关系C/C 引入数据类型,可以更方便地管理数据 2&#xff09…

laravel5.8中实现验证码组件的安装和验证

本篇文章主要讲解使用laravel5.8自带的验证码库实现验证码验证的效果教程。通过本教程你可以快速接入到自己的项目中开发相应的验证功能。 作者:任聪聪 (rccblogs.com) 日期:2023年12月17日 实际效果 安装步骤 步骤一、输入命令 composer require mews…

代理模式:中间者的故事

代理模式:中间者的故事 介绍需求分析代理模式代码实现代理模式整理和用途第一种用途第二种用途第三种用途第四种用途 总结 介绍 本文引用《大话设计模式》第七章节的内容进行学习分析,仅供学习使用 需求:小明拜托自己好朋友小王给他朋友小美…

Swift函数式编程——函数

目录 Swift函数式编程-函数 高阶函数(Higher order function) 一等函数(First class function) 闭包 函数柯里化(Function Curring) 函数式思维 使用函数解决问题 使用函数组合 总结 Sw…

解决IDEA 不能正确识别系统环境变量的问题

问题描述 本人laptop 上的是设置了GOOGLE_APPLICATION_CREDENTIALS 这个环境变量的, 正常java or python 的程序能基于这个环境变量使用 某个gcp service account 去访问GCP的资源 [gatemanmanjaro-x13 ~]$ env | grep -i google GOOGLE_APPLICATION_CREDENTIALS/…

2023年,写博客带给我的收获与成长

文章目录 前言写博客的心路历程膜拜写博客大佬博客大佬带来的诱惑尝试写博客坚持写博客 决定写博客的原因2023年写博客的成就博客的创作粉丝的增长博客专家成就商务合作 2024年对技术写作的展望 前言 没错,我就是那个考试睡大觉、作文空白交卷的王二蛋。面对写作&a…

SpringBoot2.7-集成Knife4j

Knife4j 是什么 Knife4j是一个集Swagger2 和 OpenAPI3为一体的增强解决方案 添加依赖 <!--引入Knife4j的官方start包,该指南选择Spring Boot版本<3.0,开发者需要注意--> <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knif…

Django Cookie和Session使用(十一)

一、Cookie Cookie具体指一小段信息&#xff0c;它是服务器发送出来存储在浏览器上的一组键值对&#xff0c;下次访问服务器时浏览器会自动携带这些键值对&#xff0c;以便服务器提取有用信息。 Cookie的特性 1、服务器让浏览器进行设置的 2、保存在浏览器本地&#xff0c;…

免费API-JSONPlaceholder使用手册

官方使用指南快速索引>>点这里 快速导览&#xff1a; 什么是JSONPlaceholder?有啥用?如何使用JSONPlaceholder? 关于“增”关于“改”关于“查”关于“删”关于“分页查”关于“根据ID查多个” 尝试自己搭一个&#xff1f;扩展的可能&#xff1f; 什么是JSONPlaceho…

面向对象(高级)知识点强势总结!!!

文章目录 一、知识点复习1-关键字&#xff1a;static1、知识点2、重点 2-单例模式&#xff08;或单子模式&#xff09;1、知识点2、重点 3-理解main()方法1、知识点2、重点 4-类的成员之四&#xff1a;代码块1、知识点2、重点 5-关键字&#xff1a;final1、知识点2、重点 6-关键…

新建虚拟环境并与Jupyter内核连接

第一步:在cmd里新建虚拟环境,shap38是新建的虚拟环境的名字 ,python=3.x conda create -n shap38 python=3.8第二步,安装ipykernel,打开anconda powershell prompt: 虚拟环境的文件夹位置,我的如图所示: 进入文件夹并复制地址: 输入复制的文件夹地址更改文件夹:…

交换域系数的选择:图像处理与编码的关键策略

在图像处理和编码领域&#xff0c;选择适当的交换域系数对于实现高效的图像处理和编码至关重要。交换域系数是指在特定的数学变换下产生的频域系数。通过选择合适的交换域系数&#xff0c;可以实现图像的压缩、增强和重构。本文将深入探讨交换域系数的选择在图像处理和编码中的…

你好!Apache Seata

北京时间 2023 年 10 月 29 日&#xff0c;分布式事务开源项目 Seata 正式通过 Apache 基金会的投票决议&#xff0c;以全票通过的优秀表现正式成为 Apache 孵化器项目&#xff01; 根据 Apache 基金会邮件列表显示&#xff0c;在包含 13 个约束性投票 (binding votes) 和 6 个…

Qt学习:Qt的意义安装Qt

Qt 的简介 QT 是一个跨平台的 C图形用户界面应用程序框架。它为程序开发者提供图形界面所需的所有功能。它是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正地组件编程。 支持平台 xP 、 Vista、Win7、win8、win2008、win10Windows . Unix/Linux: Ubuntu 等…

【ARMv8M Cortex-M33 系列 2.1 -- Cortex-M33 使用 .hex 文件介绍】

文章目录 HEX 文件介绍英特尔十六进制文件格式记录类型hex 示例Cortex-M 系列hex 文件的使用 HEX 文件介绍 .hex 文件通常用于微控制器编程&#xff0c;包括 ARM Cortex-M 系列微控制器。这种文件格式是一种文本记录&#xff0c;用于在编程时传递二进制信息。.hex 文件格式最常…

docker学习笔记02-安装mysql

1.安装mysql8 下载MySQL镜像 docker pull mysql:8.0创建并启动容器 docker run -itd --name mysqltest -p 9999:3306 -e MYSQL_ROOT_PASSWORD123456 mysql其中-it是交互界面 -d是后台执行 -name 指定容器名称 -p指定映射端口 -e设置环境变量 最后mysql是镜像名或者用镜像id如…

Flask 日志

flask 日志 代码源码源自编程浪子flask点餐小程序代码 记录用户访问日志 和 错误日志 这段代码是一个基于Flask框架的日志服务类&#xff0c;用于 记录用户访问日志 和 错误日志。代码中定义了一个名为LogService的类&#xff0c;其中包含了两个静态方法&#xff1a;addAcc…