pyecharts案例四——动态GDP柱状图绘制

news2024/9/29 7:17:50

思路

for循环每一年的数据,基于每一年的数据,创建每一年的Bar对象,并且将该对象添加到时间线timeline中,最后设置自动播放并绘图

实现代码

from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType

# 注意编码格式必须是GB2312,否则中文乱码
f = open("./1960-2019全球GDP数据.csv", "r", encoding="GB2312")
data_lines = f.readlines()

f.close()

# 第一行是无用数据
data_lines.pop(0)

# 将数据转换为字典存储,即如下格式:
# {年份:[[国家, gdp], [国家, gdp], [国家, gdp]...] ,年份:[[国家, gdp], [国家, gdp], [国家, gdp]...] ,...}
data_dict = {}
for line in data_lines:
    line.strip()
    year = int(line.split(",")[0])
    country = line.split(",")[1]
    gdp = float(line.split(",")[2]) # 必须转为float,因为float可把科学计数法识别出来
    # 用异常判断字典里是否有指定的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:
    # 每一年按gdp降序排列获得前8个gdp最大的国家数据
    data_dict[year].sort(key=lambda element:element[1], reverse=True)
    year_data = data_dict[year][0:8] # 前8个list
    print(year_data)
    x_data = []
    y_data = []
    for country_gdp in year_data:
        x_data.append(country_gdp[0])
        y_data.append(country_gdp[1] / 100000000) # y轴用gdp

    # 构建柱状图
    # 每一年的数据算时间线上的一个节点
    bar = Bar()
    # 让gdp最高的数据在最上面
    x_data.reverse()
    y_data.reverse()
    bar.add_xaxis(x_data)
    # 柱状图y轴数据显示在柱的右侧
    bar.add_yaxis("GDP(亿)", y_data, label_opts=LabelOpts(position="right"))
    # 反转x轴和y轴
    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, # 播放间隔时间 ms
    is_timeline_show=True,
    is_auto_play=True,
    is_loop_play=False
)

# 绘图
timeline.render("1960-2019全球gdp前8的国家.html")

结果图

在这里插入图片描述

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

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

相关文章

(7)自动调优

文章目录 前言 1 在自动调优模式下飞行前的设置 2 如何调用自动调优 3 在位置保持下调用自动调优 4 如果自动调优失败 5 补充说明 6 常见的问题 7 Dataflash日志记录 8 地面控制站消息 前言 AutoTune 试图自动调优稳定P,速率P和 D,以及最大旋转…

交流(直流)电流采集方案

芯片原理图 注意途中的绿色部分,说明此芯片可以采集交流或者直流 内部霍尔工作原理图 通过曲线可以确定再0A时输出电压为2.5v 只有随着电流的变化是大于2.5v或者小于2.5v(交流负方向,或者直流负方向) 下面是一个插排的拆解视频截…

9. ThreadLocal

9.1 ThreadLocal简介 9.1.1 面试题 ● ThreadLocal中ThreadLocalMap的数据结构和关系 ● ThreadLocal的key是弱引用,这是为什么? ● ThreadLocal内存泄漏问题你知道吗? ● ThreadLocal中最后为什么要加remove方法? 9.1.2 是什么&a…

KaiwuDB 受邀亮相山东省数字化转型论坛

4月21日,第十五届信博会暨中国(济南)数字经济高端峰会成功举办。KaiwuDB 受邀出席峰会重要论坛—山东省数字化转型论坛,并发表《工业物联网时代,数据库赋能企业数字化转型落地实践》主题演讲,与来自国内的 …

Java动态代理:优化静态代理模式的灵活解决方案

文章目录 代理模式定义具体实现分析优缺点 优化使用动态代理解决优化相关知识动态代理种类场景应用 代理模式 定义 代理模式,为其他对象提供一种代理以控制对这个对象的访问 具体实现 代理模式的具体实现描述可以分为以下几个步骤: 创建抽象对象接…

什么是Vue的JSX语法?如何使用JSX语法?

什么是Vue的JSX语法?如何使用JSX语法? 在Vue中,我们通常使用模板语法来编写组件的模板。但是,有些开发者更喜欢使用类似于React的JSX语法来编写组件。Vue也支持使用JSX语法来编写组件,本文将介绍什么是Vue的JSX语法以…

企业级信息系统开发讲课笔记4.7 Spring Boot整合JPA

文章目录 零、学习目标一、Spring Data JPA概述1、Spring Data JPA简介2、Spring Data JPA基本使用3、使用Spring Data JPA进行数据操作的多种实现方式4、自定义Repository接口中的Transactional注解5、变更操作,要配合使用Query与Modify注解 二、Spring Boot整合JP…

热门图表软件推荐,哪款更功能更强大?

在如今的数据化时代,各种企业都需要有一套高效的报表制作工具。而图表是报表中最常用、也是最重要的一部分,因此选择一款优秀的图表软件显得尤为重要。本文将为大家介绍5款热门图表软件,并突出介绍VeryReport图表软件的优势。 1. VeryReport…

NetApp 全闪存 ASA 系统可为您的任务关键型企业级应用程序、数据库和 VMware 基础架构提供简单专用的块存储

NetApp ASA:全闪存 SAN 阵列 在性能和效率之间进行艰难抉择的时代已经过去。NetApp ASA 系统提供简单专用的块存储,具有卓越的性能、高可用性和领先的效率 — 无需权衡取舍。 为什么选择适用于 SAN 的 NetApp ASA 系统? 简单的 SAN 存储&…

DCL单例及synchrosized问题

疑问待解: 1 synchronized代码块执行完后,在没有return INSTANCE之前,其他线程是否可见这个对象(因为synchronized出块后会把工作内存写到主存)? 如果可见,那么return的作用是不是可有可无&…

object类型(equals、hashCode、getClass、getName)

equals方法的改写 Override//重写equals方法,重写方法后对比的属性值(没有重写前对比的是属性值)public boolean equals(Object obj) {Students s (Students) obj;return this.name.equals(s.name) && this.age s.age;}public clas…

学顶教育:中级统计师单科成绩计算方式分享!

中级统计师的成绩管理是非滚动式的,所以需要考生一次考下两个科目,两个科目都合格之后,才能取得证书。 中级统计师的考试,是每年举行一次,全部考试科目合格者,授予由人事部统一印制、全国范围内有效的《统…

从结构上浅谈FPGA LCMXO2-4000HC-6BG256I 实现逻辑的基本原理

LCMXO2-4000HC-6BG256I lattice莱迪思深力科 MachXO2 可编程逻辑器件 (PLD) 由六个超低功耗、即时启动、非易失性 PLD 组成,可提供 256 至 6864 个查找表 (LUT) 的密度。 MachXO2 系列 PLD 提供多种特性,例如嵌入式块 RAM (EBR)、分布式 RAM 和用户闪存 …

叽里呱啦 Nacos 1.1.4 升级 1.4.1 最佳实践

博主介绍:✌全网粉丝4W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战、定制、远程,博主也曾写过优秀论文,查重率极低,在这方面…

VTK学习之读取图片,vtkImageViewer2的使用

一、vtk中的vtkImageData VTK提供相对应的类对图像文件进行读写操作 测试下效果&#xff1a; int main() {//vtkSmartPointer<vtkBMPReader> reader vtkSmartPointer<vtkBMPReader>::New();//reader->SetFileName("**\\12.bmp");vtkSmartPointer&l…

【分享】Heic图片如何批量转换成jpg格式?

我们知道&#xff0c;Heic是苹果产品的专属图片格式&#xff0c;但不是所有Windows系统都可以查看&#xff0c;而且很多需要上传图片的平台也不支持Heic格式&#xff0c;这些情况就需要把Heic转换成JPG等常用的图片格式。 如果图片数量非常多&#xff0c;要如何实现批量转换呢…

<Windows>《Windows当前桌面壁纸的位置》

《Windows当前桌面壁纸的位置》 问题&#xff1a; 想找到当前桌面壁纸的位置&#xff0c;该怎么做&#xff1f; 解决&#xff1a; win7之后&#xff0c;windows壁纸以注册表存在。注册表位置为&#xff1a; HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper该值记录了位置…

JWT验证

JSON Web Token 入门教程 - 阮一峰的网络日志 (ruanyifeng.com) 补充上时间线&#xff1f;画图&#xff1f; 隐患是什么 为什么一开始不这么做 这个封面挺好做的&#xff0c;以后笔记我也做一个&#xff0c;&#xff0c;要是能自动生成就好了 一、认证 为了保存信息用的&#…

【深度学习】日常笔记3

如果分类问题具有预测这样带有自然顺序的问题&#xff0c;如{婴⼉, ⼉童, ⻘少年, ⻘年⼈, 中年⼈, ⽼年⼈}&#xff0c;那么可以把分类问题转变为回归问题了。不过可以使用独热编码one-hot encoding。 类别对应的分量设置为1&#xff0c;其他所有分量设置为0。在我们的例⼦中…

Cadence原理图快速查找元器件的方法

1.Cadence原理图快速查找元器件的方法 ①在红框中输入元器件编号&#xff0c;点击望远镜的图标在底下的状态栏可看到查找到的相关元器件&#xff0c;点击元器件可自动定位当前元器件的位置。 ②点击hierarchy&#xff08;层&#xff09;可自主查找&#xff0c;找到后点击序号即…