数据可视化:动态柱状图

终于来到最后一个数据可视化的文章拿啦~~~

在这里学习如何绘制动态柱状图

我先整个活

(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤

什么是pyecharts?

答:

Python的Pyecharts软件包。它是一个用于Python数据可视化和图表绘制的库,可用于制作各种图表和可视化结果,包括柱状图、折线图、饼图、散点图、地图等。Pyecharts使用JavaScript的ECharts库进行底层绘制,因此它提供了易于使用的Python界面和大量的示例代码。同时,Pyecharts还支持在Jupyter notebook中的实时交互和动态展示,使其非常适合于数据分析和数据可视化。

1.案例效果


2.创建基础柱状图 

 (1)通过Bar对象构建柱状图

(2)反转X,Y轴

 

(3)将数据置于右侧 

(4)整体代码示例

 

"""构建基础柱状图
"""
from pyecharts.charts import Bar
from pyecharts.options import LabelOpts# 使用Bar构建基础柱状图
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")

 

3.创建基础时间柱状图

(1)创建时间线

 (2)设置自动播放

(3)设置时间线的主题

(4)整体代码

"""基础时间柱状图
"""
from pyecharts.charts import Bar, Timeline
from pyecharts.options import LabelOpts
from pyecharts.globals import ThemeTypebar1 = Bar()
bar1.add_xaxis(['中国', '美国', '英国'])
bar1.add_yaxis("GDP",[30, 20, 10],label_opts=LabelOpts(position="right"))
bar1.reversal_axis()bar2 = Bar()
bar2.add_xaxis(['中国', '美国', '英国'])
bar2.add_yaxis("GDP",[50, 50, 100],label_opts=LabelOpts(position="right"))
bar2.reversal_axis()bar3 = Bar()
bar3.add_xaxis(['中国', '美国', '英国'])
bar3.add_yaxis("GDP",[1000, 600, 300],label_opts=LabelOpts(position="right"))
bar3.reversal_axis()# 构建时间线对象
timeline = Timeline(# 设置时间线的主题{"theme": ThemeType.LIGHT}
)
# 在时间线内添加柱状图对象
timeline.add(bar1, "点1")
timeline.add(bar2, "点2")
timeline.add(bar3, "点3")# 设置自动播放
timeline.add_schema(# 时间间隔play_interval=1000,# 是否显示时间线is_timeline_show=True,# 是否自动播放is_auto_play=True,# 是否循环自动播放is_loop_play=True
)# 有了时间线之后绘图需要使用时间线对象绘图
timeline.render("基础时间线柱状图.html")

4.GDP动态柱状图的绘制

(1)补充知识:列表的sort方法

sort()是Python中用于排序列表的内置函数。使用sort()方法可以对列表进行升序排列或降序排列。

sort()函数有两种用法:

1. 对列表进行升序排列:
my_list = [2, 5, 1, 9, 4]my_list.sort()print(my_list) # 输出 [1, 2, 4, 5, 9]
2. 对列表进行降序排列:
my_list = [2, 5, 1, 9, 4]my_list.sort(reverse=True)print(my_list) # 输出 [9, 5, 4, 2, 1]
3.sorted

另外,之前学习过sorted()函数对列表进行排序,不同的是,sorted()函数不会修改原始列表,而是返回一个新的已排序的列表。

例如:

my_list = [2, 5, 1, 9, 4]
sorted_list = sorted(my_list)
print(my_list) # 输出 [2, 5, 1, 9, 4]
print(sorted_list) # 输出 [1, 2, 4, 5, 9]

注:sort()和sorted()函数都是在原始列表的基础上进行排序,因此会对原始列表做出修改或返回一个新的已排序的列表。如果不想对原始列表进行修改,可以先对原始列表进行复制再进行排序。

4.使用方法

(2)数据处理

1.需求分析

2.处理数据

"""GDP动态柱状图绘制
"""
from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType# 读取数据
f = open("D:\\IOText\\DataDoing\\1960-2019全球GDP数据.csv", "r", encoding="GB2312")
data_lines = f.readlines()
# 关闭文件
f.close()
# 删除第一条数据
data_lines.pop(0)
# 将数据转化为字典存储,格式
# 年份: [[国家,gdp],[国家,gdp]]
# 定义字典对象存储
data_dict = {}
for line in data_lines:year = int(line.split(",")[0])country = line.split(",")[1]GDP = float(line.split(",")[2])# 判断年份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)# 取GDP前八的year_data_before8 = data_dict[year][0:8]x_data = []y_data = []for country_GDP in year_data_before8:# x轴添加国家x_data.append(country_GDP[0])# y轴添加GDPy_data.append(country_GDP[1] / 100000000)bar = Bar()x_data.reverse()y_data.reverse()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"))# 加入时间线timeline.add(bar, str(year))# 设置
timeline.add_schema(play_interval=1000,is_timeline_show=True,is_auto_play=True,is_loop_play=True
)# 创建图
timeline.render("1960~2019年全球GDP前八国家.html")

结语

对于刚刚接触编程的同学来说,这个问题肯定是很难得,但是多练习练习就好了,ヾ(◍°∇°◍)ノ゙

拜拜ヾ( ̄▽ ̄)Bye~Bye~

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

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

相关文章

tomcat默认最大线程数、等待队列长度、连接超时时间

tomcat默认最大线程数、等待队列长度、连接超时时间 tomcat的默认最大线程数是200,默认核心线程数(最小空闲线程数)是10。 在核心线程数满了之后,会直接启用最大线程数(和JDK线程池不一样,JDK线程池先使用工作队列再使用最大线程…

力扣最热一百题——盛水最多的容器

终于又来了。我的算法记录的文章已经很久没有更新了。为什么呢? 这段时间都在更新有关python的文章,有对python感兴趣的朋友可以在主页找到。 但是这也并不是主要的原因 在10月5号我发布了我的第一篇博客,大家也可以看见我的每一篇算法博客…

【23真题】易!题源全部定位!带讲解!

今天分享的是23年长春理工大学808的信号与系统试题及解析。 本套试卷难度分析:22年长春理工808考研真题,我也发布过,若有需要,戳这里自取!本套试题内容难度中等偏下,题量较少,没有选择填空题&a…

算法学习打卡day41|栈和队列:栈和队列相互实现、括号匹配、逆波兰表达式、滑动窗口最大值问题、求前 K 个高频元素

栈和队列相互实现 力扣题目链接:用栈实现队列、用队列实现栈 题目描述: 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(…

Android菜单Menu详解

菜单资源文件通常放置在res\menu目录下&#xff0c;在创建项目时&#xff0c;默认不自动创建menu目录&#xff0c;所以需手动创建。 Android Resource Directory→ value menu 或在创建根元素为<menu></menu>标记的xml文件对自动气建眼 res→Android Resounce File…

无人机航迹规划:狐猴优化算法LO求解无人机路径规划MATLAB(可以修改起始点,地图可自动生成)

一、狐猴优化算法 狐猴优化算法&#xff08;Lemurs Optimizer&#xff0c;LO&#xff09;由Ammar Kamal Abasi等人于2022年提出&#xff0c;该算法模拟狐猴的跳跃和跳舞行为&#xff0c;具有结构简单&#xff0c;思路新颖&#xff0c;搜索速度快等优势。狐猴优化算法&#xff…

JavaScript 进阶问题列表,巩固自己的知识。

不定时更新 JavaScript 进阶问题列表 从基础到进阶&#xff0c;测试你有多了解 JavaScript&#xff0c;刷新你的知识&#xff0c;或者帮助你的 coding 面试&#xff01; &#x1f4aa; &#x1f680; 答案❤️ 1. 输出是什么&#xff1f; function sayHi() {console.log(na…

代码汇总【数据结构与算法】【精致版】

代码汇总【数据结构与算法】【精致版】 学习 第一章 引言 第二章 线性表 顺序表 1-顺序表.h 1-顺序表的测试.c //1.顺序表的初始化 //【算法2-1】 顺序表的初始化 //创建顺序表函数 初始化前n个数据 //2.顺序表的插入 //【算法2-2】顺序表的插入 //3.顺序表的删除 //【…

iSlide2024一款基于PPT的插件工具包含38个设计辅助功能

根据使用者情况表明iSlide 是一款拥有30W素材的PPT高效设计软件&#xff0c;可提高90%工作效率&#xff0c;现全球已有超过1400万使用者&#xff0c;智能排版原创高品模板可商用图形&#xff0c;真正摆脱PPT的束缚&#xff0c;把精力用在该用的地方。我们都明白islide插件功能特…

vue项目中页面遇到404报错

vue页面访问正常&#xff0c;但是一刷新就会404的问题解决办法&#xff1a; 1.解决方法&#xff1a; 将vue的路由模式 mode: history 修改为 mode: hash模式 //router.js文件 const router new Router({//mode: history, mode: hash,routes: [{ path: /, redirect: /login …

nodejs 操作rabbitMQ rascal库(针对amqplib的封装)

Rascal 是一个围绕amqplib 的丰富的 pub/sub 包装器。amqplib 最好的事情之一是它不会对您如何使用它做出假设。另一个是它不尝试抽象AMQP Concepts。因此&#xff0c;该库提供了大量的控制和灵活性&#xff0c;但您有责任采用适当的模式和配置。您需要注意的是&#xff1a; 默…

基于Python OpenCV的金铲铲自动进游戏、D牌...

基于Python OpenCV的金铲铲自动进游戏、D牌... 1. 自动点击进入游戏1.1 环境准备1.2 功能实现2. 自动D牌3. 游戏结束自动退1. 自动点击进入游戏 PS: 本测试只用于交流学习OpenCV的相关知识,不能用于商业用途,后果自负。 1.1 环境准备 需要金铲铲在win10的模拟器,我们这里选…

Vue 3 中,watch 和 watchEffect 的区别

结论先行&#xff1a; watch&#xff1a;需要指明要监听的数据&#xff0c;而且在回调函数中可以获取到属性变化的前后值&#xff1b; 适用于需要精确控制监视范围的情况&#xff1b;也就是需要针对特定数据变化执行操作。 watchEffect&#xff1a;不用指明监听哪个属性&…

python单元测试框架(继承、unittest参数化、断言、测试报告)

一、继承 继承能解决什么问题&#xff1f; unittest每个模块都要用到前提条件以及清理&#xff0c;如果有上百个模块&#xff0c;我们要改域名和浏览器&#xff0c;就会工作量很大特别麻烦&#xff0c;这时我们可以用继承的思想只用改一次 我们可以将前提和清理提出来单独放…

新登录接口独立版变现宝升级版知识付费小程序-多领域素材资源知识变现营销系统

源码简介&#xff1a; 资源入口 点击进入 源码亲测无bug&#xff0c;含前后端源码&#xff0c;非线传&#xff0c;修复最新登录接口 梦想贩卖机升级版&#xff0c;变现宝吸取了资源变现类产品的很多优点&#xff0c;摒弃了那些无关紧要的东西&#xff0c;使本产品在运营和变现…

MVC、MVP、MVVM区别

MVC、MVP、MVVM区别 MVC&#xff08;Model-View-Controller&#xff09; 。是一种设计模式&#xff0c;通常用于组织与应用程序的数据流。它通常包括三个组件&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&…

TDengine 上榜 BenchCouncil 全球首个开源贡献榜

近日&#xff0c;Bench Council&#xff08;国际测试委员会&#xff09;公布了“世界首个开源贡献榜”&#xff0c;该榜单号称“只以贡献分高下”。值得一提的是&#xff0c;涛思数据、TDengine 上榜 BenchCouncil 发布的开源计算机系统机构榜、成果榜&#xff0c;TDengine 创始…

SQL语句性能优化

1、查询 SQL 尽量不要使用 select *,而是 select 具体字段 反例子: select * from sys_user; 正例子: select id,name from sys_user; 理由如下: 只取需要的字段,节省资源、减少网络开销。select * 进行查询时,很可能就不会使用到覆盖索引了,就会造成回表查询。…

CDN策略好坏的重要性

CDN加速技术在今天的互联网世界中扮演着至关重要的角色&#xff0c;它可以显著提高网站和应用程序的性能&#xff0c;同时也有助于提供更好的安全性。然而&#xff0c;设定安全策略的好坏对CDN的影响是一个关键的议题&#xff0c;本文将深入探讨这个问题。 CDN&#xff08;内容…

pdfH5实现pdf预览功能

1.引入 npm install pdfh5 2.使用 <view id"pdfBox" class""></view> showPdf(url) {this.pdfh5 new Pdfh5("", {URIenable: false,zoomEnanle: true,maxZoom: 2,pdfurl: url})this.pdfh5.on("complete", function(st…