当前位置: 首页 > news >正文

9-数据可视化-动态柱状图

文章目录

  • 1.基础柱状图
  • 2.基础时间线柱状图
  • 3.动态柱状图

1.基础柱状图

from pyecharts.charts import Bar
bar = Bar()  # 构建柱状图对象
bar.add_xaxis(["中国","美国","英国"])
bar.add_yaxis("GDP",[30,20,10])
bar.render()

在这里插入图片描述
反转xy轴
bar.reversal_axis()

from pyecharts.charts import Bar
bar = Bar()  # 构建柱状图对象
bar.add_xaxis(["中国","美国","英国"])
bar.add_yaxis("GDP",[30,20,10])
bar.reversal_axis() # 【反转】
bar.render()

在这里插入图片描述
若将数字(10、20、30)移到右侧
from pyecharts.options import LabelOpts
label_opts=LabelOpts(position=“right”)

from pyecharts.charts import Bar
from pyecharts.options import LabelOpts  # 【新增】
bar = Bar()  # 构建柱状图对象
bar.add_xaxis(["中国","美国","英国"])
bar.add_yaxis("GDP",[30,20,10],label_opts=LabelOpts(position="right"))  # 【修改】
bar.reversal_axis() # 反转
bar.render()

在这里插入图片描述

2.基础时间线柱状图

from pyecharts.charts import Bar, Timeline
from pyecharts.options import LabelOptsbar1 = 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,40,30],label_opts=LabelOpts(position="right"))
bar2.reversal_axis()bar3 = Bar()  # 构建柱状图对象
bar3.add_xaxis(["中国","美国","英国"])
bar3.add_yaxis("GDP",[60,20,50],label_opts=LabelOpts(position="right"))
bar3.reversal_axis()timeline=Timeline()
timeline.add(bar1,"点1")
timeline.add(bar2,"点2")
timeline.add(bar3,"点3")
timeline.render()

在这里插入图片描述
为效果图设置自动播放

timeline.add_schema(play_interval=500,  # 每1000毫秒自动切换下一个点is_timeline_show=True,  # 显示时间线is_auto_play=True,  # 是否自动播放is_loop_play=True  # 是否循环播放
)

为效果图设置颜色

from pyecharts.globals import ThemeType
timeline=Timeline({"theme":ThemeType.LIGHT})  # 设置主题theme

在这里插入图片描述
完整代码

from pyecharts.charts import Bar, Timeline
from pyecharts.globals import ThemeType
from pyecharts.options import LabelOptsbar1 = 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,40,30],label_opts=LabelOpts(position="right"))
bar2.reversal_axis()bar3 = Bar()
bar3.add_xaxis(["中国","美国","英国"])
bar3.add_yaxis("GDP",[60,20,50],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=500,  # 每1000毫秒自动切换下一个点is_timeline_show=True,  # 显示时间线is_auto_play=True,  # 是否自动播放is_loop_play=True  # 是否循环播放
)timeline.render()

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

3.动态柱状图

(1)sort方法

a=[["a",5],["b",3],["c",9]]  # 数据a是由列表组成的列表def f(x):  # 对列表的1号下标(数字)排序return x[1]a.sort(key=f,reverse=True) 
# 用key指明排序函数,明确参照哪个数据对列表排序
# reverse=True 表示由大到小排序print(a)  # [['c', 9], ['a', 5], ['b', 3]]

也可使用匿名函数书写

a=[["a",5],["b",3],["c",9]]  # 由列表组成的列表a.sort(key=lambda x:x[1],reverse=True) print(a)  # [['c', 9], ['a', 5], ['b', 3]]

(2)数据下载
数据下载

在这里插入图片描述

使用记事本打开(第一行无效数据)

在这里插入图片描述

(3)数据处理与绘图

from pyecharts.charts import Bar, Timeline
from pyecharts.globals import ThemeType
from pyecharts.options import LabelOpts, TitleOptsf=open("D:/1960-2019全球GDP数据.csv","r",encoding="GB2312")  # 注意编码,与源文档一致
data_lines=f.readlines()
# readlines按照行的方式把整个文件中的内容进行一次性读取,返回一个列表,其中每一行的数据为一个元素
f.close()
data_lines.pop(0)  # 删除第一条数据"""
将数据转换为字典,格式为
{1960:[[美国,123],[中国,456]],1961:[[xxx],[xxx]]}
"""
data_dict={}  # 空字典
for x in data_lines:year=int(x.split(",")[0]) # 根据逗号切割,0号下标是年份,1号国家,2号GDPcountry=x.split(",")[1]GDP=float(x.split(",")[2])  # 使用float将科学计数法转化为数字try:  # 如果当前年份的列表存在,进行追加data_dict[year].append([country,GDP])except KeyError:  # KeyError表示当前数据不存在。年份不存在应创建新列表data_dict[year]=[]data_dict[year].append([country,GDP])  # 创建完列表再添加数据# 创建时间线,设置颜色主题
timeline=Timeline({"theme":ThemeType.LIGHT})# 将每一年的数据都构造为一个图表
# 字典是乱序的,需要取出年份并排序
sort_year_list = sorted(data_dict.keys())  # .key取出字典的键(年份),sorted默认从小到大排序
# 输出:[1960, 1961, 1962, ...]for year in sort_year_list:
# 最终图表只要前八,需要进行排序data_dict[year].sort(key=lambda x: x[1],reverse=True) # 对该年的数据,根据GDP由大到小排序year_data = data_dict[year][0:8]  # 切片取前八x_data=[]  # x轴数据的空列表,存放国家y_data=[]  # y轴数据的空列表,存放GDPfor y in year_data:x_data.append(y[0])  # 下标0是国家y_data.append(y[1]/100000000)  # 下标1是GDP,GDP以亿为单位# 构建柱状图bar=Bar()x_data.reverse()  # x轴数据反转,原来最大的在最下面,反转后到最上面y_data.reverse()  # 要保证x和y轴数据对应,y也要反转bar.add_xaxis(x_data)bar.add_yaxis("GDP(亿)",y_data,label_opts=LabelOpts(position="right"))  # 以亿为单位,数据右侧显示bar.reversal_axis()  # 反转xy轴# 设置每一年的图表标题bar.set_global_opts(title_opts=TitleOpts(title=f"{year}年全球前八GDP数据"))# 添加到时间线,add(bar对象,鼠标聚焦显示的内容(年份))timeline.add(bar,str(year))# 自动播放
timeline.add_schema(play_interval=500,is_timeline_show=True,is_auto_play=True,is_loop_play=False
)# 生成
timeline.render("1960-2019全球GDP前8国家.html")

效果图(文件大小有限,3.1倍速播放)

在这里插入图片描述

相关文章:

9-数据可视化-动态柱状图

文章目录1.基础柱状图2.基础时间线柱状图3.动态柱状图1.基础柱状图 from pyecharts.charts import Bar bar Bar() # 构建柱状图对象 bar.add_xaxis(["中国","美国","英国"]) bar.add_yaxis("GDP",[30,20,10]) bar.render()反转xy轴…...

Linux系统【centos7x】安装宝塔面板教程

1. 下载宝塔面板安装包 在宝塔官网下载最新版的安装包,下载完后上传到服务器。 2. 安装宝塔面板 在终端中输入以下命令: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh…...

蓝易云:Linux系统【Centos7】top命令详细解释

top命令是一个非常常用的Linux系统性能监控工具,它可以实时动态地查看系统的各项性能指标,并且可以按照不同的排序方式进行排序,方便用户查找信息。 下面是top命令的详细解释: 1. 第一行:显示系统的运行时间、当前登…...

Muduo库源码剖析(一)——Channel

Muduo库源码剖析(一)——Channel 说明 本源码剖析是在muduo基础上,保留关键部分进行改写分析。 要点总结 事件分发器 event dispatcher中最重要的两个类型 channel 和 Poller Channel可理解为通道,poller往通道传输数据(事件发生情况)。 EventLoop…...

Java多线程:定时器Timer

前言 定时/计划功能在Java应用的各个领域都使用得非常多,比方说Web层面,可能一个项目要定时采集话单、定时更新某些缓存、定时清理一批不活跃用户等等。定时计划任务功能在Java中主要使用的就是Timer对象,它在内部使用多线程方式进行处理&am…...

设计模式---装饰模式

目录 介绍 实现 优缺点 装饰模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有类的一个包装。这种模式创建了一个装饰类,用来包装原有…...

跨时钟域传输数据——单bit和多bit信号(总结)

文章目录前言一、慢时钟域到快时钟域1、单bit信号2、多bit信号二、快时钟域到慢时钟域1、单bit信号2、多bit信号三、多bit信号跨时钟域传输1、多个信号合并2、多周期路径 Multi-cycle Path/MCP3、使用格雷码4、使用异步FIFO5、使用DMUX电路结构6、握手信号传输四、简答题1、跨时…...

高并发下如何保证接口幂等

文章目录 1. insert前先select2. 加悲观锁3. 加乐观锁4. 加唯一索引5. 建防重表6. 根据状态机7. 加分布式锁8. 获取token接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要…...

Retrofit源码分析小结

Retrofit源码分析&小结 简介 Retrofit是对Okhttp网络请求的二次封装,通过注解动态代理的方式,简化了Okhttp的使用,使得通过简单的配置就可以像调用接口一样去请求网络接口;除此之外Retrofit还支持RxJava和kotlin的协程 基本…...

【从零开始学习 UVM】11.4、UVM Register Layer —— UVM Register Model 实战项目(RAL实战,交通灯为例)

文章目录 DesignInterfaceRegister Model ExampleRegister EnvironmentAPB Agent ExampleTestbench EnvironmentSequencesTest在之前的几篇文章中,我们已经了解了寄存器模型是什么以及如何使用它来访问给定设计中的寄存器。现在让我们看一个完整的例子,展示如何为给定设计编写…...

session和token的登录机制

做登录的时候遇到了token ,web和smtp的登录情况,这里 记录一下我所学习的两种登录方式,一种是token ,一种是session session 登录机制 当用户请求登录接口进行登录服务端 获得登录的信息,从而在数据库中查到相应的用…...

大厂研发成本大曝光,研发占大头

近日,腾讯发布《2022 年腾讯研发大数据报告》,披露了 2022 年腾讯在研发投入、研发效能、开源协同等方面的重要数据。 《报告》显示,2022 年腾讯内部研发人员占比达到 74%,这意味着,平均每四个腾讯员工中,…...

python爬虫第一节基础概念

爬虫是一种自动化抓取互联网上数据的技术。在网络信息爆炸的今天,爬虫技术已经成为数据获取和信息分析的重要手段。本文将详细介绍爬虫的基础知识和操作,帮助初学者快速入门。 一、爬虫的基本原理 爬虫的基本原理是通过网络请求获取网页源代码&#xf…...

web学习---Vue---笔记(1)

该笔记是记录尚硅谷的Vue学习视频的笔记,视频地址为:学习视频地址 初始Vue Vue组件化的特点 组件化声明式编码虚拟DOMDiff算法,尽量复用DOM节点 H5的组件,是把某一个模块封装,里面写HTML\CSS\JS等,算是一…...

【前端面试题——微信小程序】

目录1.请谈谈wxml与标准的html的异同?2.请谈谈WXSS和CSS的异同?3.请谈谈微信小程序主要目录和文件的作用?4.请谈谈小程序的双向绑定和vue的异同?5.简单描述下微信小程序的相关文件类型?6.微信小程序有哪些传值(传递数据…...

gpt模型训练-gpt3模型详解

训练一个GPT模型需要大量的数据集和计算资源。在这里,我提供一些较为通用的训练步骤以供参考: 获取数据集 首先需要收集一些数据集,数据集建议获取大型的常用文本数据集。常见的例如维基百科、各种在线文章、小说、论文等,数据集…...

vue尚品汇商城项目-day04【27.分页器静态组件(难点)】

文章目录27.分页器静态组件(难点)本人其他相关文章链接27.分页器静态组件(难点) 难点: 考虑点1:为啥需要分页呢? 答案:按需加载 考虑点2:分页器展示,需要哪…...

使用SeaFile搭建私有云盘并公网访问【cpolar内网穿透】

文章目录1. 前言2. SeaFile云盘设置2.1 Owncould的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置4. 公网访问测试5. 结语1. 前言 现在我们身边的只能设备越来越多,各…...

蓝桥杯第26天(Python)考前挣扎

题型: 1.思维题/杂题:数学公式,分析题意,找规律 2.BFS/DFS:广搜(递归实现),深搜(deque实现) 3.简单数论:模,素数(只需要…...

WuThreat身份安全云-TVD每日漏洞情报-2023-04-04

漏洞名称:RSA NetWitness Platform 内存损坏漏洞 漏洞级别:中危 漏洞编号:CVE-2022-47529,CNNVD-202303-2419 相关涉及:RSA NetWitness Platform 12.2之前版本 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-07193 漏洞名称:EyouCms <1.5.…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...