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

数据可视化 - 动态柱状图

基础柱状图

通过Bar构建基础柱状图

from pyecharts.charts import Bar
from pyecharts.options import LabelOpts
# 使用Bar构建基础柱状图
bar = Bar()
# 添加X轴
bar.add_xaxis(["中国", "美国", "英国"])
# 添加Y轴  # 设置数值标签在右侧
bar.add_yaxis("GDP", [30, 50, 40], label_opts=LabelOpts(position="right"))
# 反转X轴和Y轴
bar.reversal_axis()
# 绘图
bar.render("基础柱状图.html")

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

2. 和折线图一样,通过add_xaxis()和add_yaxis()添加x和y轴数据

3. 通过柱状图对象的:reversal_axis(),反转x和y轴

4. 通过label_opts=LabelOpts(position="right")设置数值标签在右侧显示

基础时间线柱状图

创建时间线

Timeline()-时间线

柱状图描述的是分类数据,回答的是每一个分类中『有多少?』这个问题. 这是柱状图的主要特点,同时柱状图很难动态的描述一个趋势性的数据. 这里pyecharts为我们提供了一种解决方案-时间线

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

# 导入bar柱状图 Timeline时间线
from pyecharts.charts import Bar, Timeline
# 导入系统配置项
from pyecharts.options import LabelOpts
# 导入ThemeType主题类型
from pyecharts.globals import ThemeType
# 使用Bar构建基础柱状图
bar1 = Bar()
# 添加X轴
bar1.add_xaxis(["中国", "美国", "英国"])
# 添加Y轴
bar1.add_yaxis("GDP", [30, 50, 40], label_opts=LabelOpts(position="right"))bar2 = Bar()
bar2.add_xaxis(["中国", "美国", "英国"])
bar2.add_yaxis("GDP", [40, 40, 20], label_opts=LabelOpts(position="right"))bar3 = Bar()
bar3.add_xaxis(["中国", "美国", "英国"])
bar3.add_yaxis("GDP", [50, 30, 30], label_opts=LabelOpts(position="right"))bar4 = Bar()
bar4.add_xaxis(["中国", "美国", "英国"])
bar4.add_yaxis("GDP", [60, 20, 50], label_opts=LabelOpts(position="right"))# 构建时间线对象
timeline = Timeline({"theme": ThemeType.LIGHT})     # 主题设置
# 在时间线内部添加柱状图对象
timeline.add(bar1, "点1")
timeline.add(bar2, "点2")
timeline.add(bar3, "点3")
timeline.add(bar4, "点4")

自动播放 

timeline.add_schema(play_interval=1000,         # 自动播放的时间间隔,单位毫秒is_timeline_show=True,      # 是否在自动播放的时候显示时间线is_auto_play=True,          # 是否自动播放is_loop_play=True           # 是否循环自动播放
)

 时间线设置主题

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

 完整代码

"""基础时间线柱状图
"""
# 导入bar柱状图 Timeline时间线
from pyecharts.charts import Bar, Timeline
# 导入系统配置项
from pyecharts.options import LabelOpts
# 导入ThemeType主题类型
from pyecharts.globals import ThemeType
# 使用Bar构建基础柱状图
bar1 = Bar()
# 添加X轴
bar1.add_xaxis(["中国", "美国", "英国"])
# 添加Y轴
bar1.add_yaxis("GDP", [30, 50, 40], label_opts=LabelOpts(position="right"))bar2 = Bar()
bar2.add_xaxis(["中国", "美国", "英国"])
bar2.add_yaxis("GDP", [40, 40, 20], label_opts=LabelOpts(position="right"))bar3 = Bar()
bar3.add_xaxis(["中国", "美国", "英国"])
bar3.add_yaxis("GDP", [50, 30, 30], label_opts=LabelOpts(position="right"))bar4 = Bar()
bar4.add_xaxis(["中国", "美国", "英国"])
bar4.add_yaxis("GDP", [60, 20, 50], label_opts=LabelOpts(position="right"))# 构建时间线对象
timeline = Timeline({"theme": ThemeType.LIGHT})     # 主题设置
# 在时间线内部添加柱状图对象
timeline.add(bar1, "点1")
timeline.add(bar2, "点2")
timeline.add(bar3, "点3")
timeline.add(bar4, "点4")
# 自动播放设置
timeline.add_schema(play_interval=1000,         # 自动播放的时间间隔,单位毫秒is_timeline_show=True,      # 是否在自动播放的时候显示时间线is_auto_play=True,          # 是否自动播放is_loop_play=True           # 是否循环自动播放
)# 绘图
timeline.render("基础时间线柱状图.html")

GDP动态柱状图绘制

需求分析

简单分析后,发现最终效果图中需要:

1. GDP数据处理为亿级

2. 有时间轴,按照年份为时间轴的点

3. x轴和y轴反转,同时每一年的数据只要前8名国家

4. 有标题,标题的年份会动态更改

5. 设置了主题为LIGHT

代码

"""
演示第三个图表:GDP动态柱状图开发
"""
from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType# 读取数据
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: [ [美国, 123], [中国,321], ......  ], 1961: [ [美国, 123], [中国,321], ......  ], ...... }
# 先定义一个字典对象
data_dict = {}
for line in data_lines:year = int(line.split(",")[0])      # 年份country = line.split(",")[1]        # 国家gdp = float(line.split(",")[2])     # gdp数据# 如何判断字典里面有没有指定的key呢?try:data_dict[year].append([country, gdp])except KeyError:data_dict[year] = []data_dict[year].append([country, gdp])# print(data_dict[1960])
# 创建时间线对象
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)# 取出本年份前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()y_data.reverse()bar.add_xaxis(x_data)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))# 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")

 

相关文章:

数据可视化 - 动态柱状图

基础柱状图 通过Bar构建基础柱状图 from pyecharts.charts import Bar from pyecharts.options import LabelOpts # 使用Bar构建基础柱状图 bar Bar() # 添加X轴 bar.add_xaxis(["中国", "美国", "英国"]) # 添加Y轴 # 设置数值标签在右侧 b…...

【JVM】JVM五大内存区域介绍

目录 一、程序计数器(线程私有) 二、java虚拟机栈(线程私有) 2.1、虚拟机栈 2.2、栈相关测试 2.2.1、栈溢出 三、本地方法栈(线程私有) 四、java堆(线程共享) 五、方法区&…...

自动驾驶感知系统--惯性导航定位系统

惯性导航定位 惯性是所有质量体本身的基本属性,所以建立在牛顿定律基础上的惯性导航系统(Inertial Navigation System,INS)(简称惯导系统)不与外界发生任何光电联系,仅靠系统本身就能对车辆进行连续的三维定位和三维定向。卫星导…...

Netty简介

Netty Netty初体验基础概念Reactor模型传统的阻塞IO模型基础Reactor模型多线程Reactor模型 为什么要使用Netty? (NIO的框架,用于解决高并发出现的问题) *BIO:同步且阻塞的IO NIO:同步且非阻塞的IO(不是说线程&#x…...

基于TCP/IP对等模型对计算机网络知识点的整合

目录 前言 应用层 Telnet SSH FTP/TFTP SNMP:简单的网络管理协议 HTTP:超文本传输协议 SMTP:电子邮件传输协议 DNS:域名解析协议 DHCP:动态主机配置协议 NTP:网络时钟协议 传输层 TCP UDP 端…...

【SQL应知应会】表分区(一)• Oracle版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 分区表 • Oracle版 前言一、分区表1.什么是表分区…...

PostgreSQL 常用空间处理函数

1.OGC标准函数 管理函数: 添加几何字段 AddGeometryColumn(, , , , , ) 删除几何字段 DropGeometryColumn(, , ) 检查数据库几何字段并在geometry_columns中归档 Probe_Geometry_Columns() 给几何对象设置空间参考(在通过一个范围做空间查询时常用&…...

ubuntu初始化/修改root密码

1.登录ubuntu后,使用sudo passwd root命令,进行root密码的初始化/修改,注:这里需要保证两次输入的密码都是同一个,才可成功 ubuntugt-ubuntu22-04-cmd-v1-0-32gb-100m:~/ocr$ sudo passwd root New password: Retype…...

【Linux后端服务器开发】select多路转接IO服务器

目录 一、高级IO 二、fcntl 三、select函数接口 四、select实现多路转接IO服务器 一、高级IO 在介绍五种IO模型之前,我们先讲解一个钓鱼例子。 有一条大河,河里有很多鱼,分布均匀。张三是一个钓鱼新手,他钓鱼的时候很紧张&a…...

支持向量机(iris)

代码: import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn import svm import numpy as np# 定义每一列的属性 colnames [sepal-length, sepal-width, petal-length, petal-width, class] # 读取数据 iris pd.read_csv(data\\i…...

24考研数据结构-第二章:线性表

目录 第二章:线性表2.1线性表的定义(逻辑结构)2.2 线性表的基本操作(运算)2.3 线性表的物理/存储结构(确定了才确定数据结构)2.3.1 顺序表的定义2.3.1.1 静态分配2.3.1.2 动态分配2.3.1.3 mallo…...

Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述动态 sql 的执行原理不?

OGNL表达式 OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,它旨在提供一个更高的更抽象的层次来对Java对象图进行导航。 OGNL表达式的基本单位是"导航链"&a…...

250_C++_typedef std::function<int(std::vector<int> vtBits)> fnChkSstStt

假设我们需要定义一个函数类型来表示一个能够计算整数向量中所有元素之和的函数。 首先,我们定义一个函数,它的参数是一个 std::vector 类型的整数向量,返回值是 int 类型,表示所有元素之和: int sumVectorElements(std::vector<int> vt) {int sum = 0;for (int n…...

无涯教程-jQuery - Transfer方法函数

Transfer 效果可以与effect()方法一起使用。这会将元素的轮廓转移到另一个元素。尝试可视化两个元素之间的交互时非常有用。 Transfer - 语法 selector.effect( "transfer", {arguments}, speed ); 这是所有参数的描述- className - 传输元素将收到的可选类名。…...

openGauss学习笔记-24 openGauss 简单数据管理-模式匹配操作符

文章目录 openGauss学习笔记-24 openGauss 简单数据管理-模式匹配操作符24.1 LIKE24.2 SIMILAR TO24.3 POSIX正则表达式 openGauss学习笔记-24 openGauss 简单数据管理-模式匹配操作符 数据库提供了三种独立的实现模式匹配的方法&#xff1a;SQL LIKE操作符、SIMILAR TO操作符…...

JAVASE---数据类型与变量

1. 字面常量 常量即程序运行期间&#xff0c;固定不变的量称为常量&#xff0c;比如&#xff1a;一个礼拜七天&#xff0c;一年12个月等。 public class Demo{ public static void main(String[] args){ System.Out.println("hello world!"); System.Out.println(…...

IDEA Groovy 脚本一键生成实体类<mybatisplus>

配置数据库&#xff08;mysql&#xff09; 一键生成&#xff08;右键点击table&#xff09; 配置自己的groovy脚本 import com.intellij.database.model.DasTable import com.intellij.database.util.Case import com.intellij.database.util.DasUtil import com.intellij.data…...

无涯教程-jQuery - Puff方法函数

吹气效果可以与show/hide/toggle一起使用。通过按比例放大元素并同时隐藏它&#xff0c;可以形成粉扑效果。 Puff - 语法 selector.hide|show|toggle( "puff", {arguments}, speed ); 这是所有参数的描述- model - 效果的模式。可以是"显…...

什么叫前后端分离?为什么需要前后端问题?解决了什么问题?

单体架构出现的问题 引出&#xff1a;来看一个单体项目架构的结构 通过上述可以看到单体架构主要存在以下几点问题&#xff1a; 开发人员同时负责前端和后端代码开发&#xff0c;分工不明确开发效率低前后端代码混合在一个工程中&#xff0c;不便于管理对开发人员要求高(既会前…...

Vector<T> 动态数组(随机访问迭代器)(答案)

答案如下 //------下面的代码是用来测试你的代码有没有问题的辅助代码,你无需关注------ #include <algorithm> #include <cstdlib> #include <iostream> #include <vector> #include <utility> using namespace std; struct Record { Record…...

WAN2.2文生视频效果实测对比:不同SDXL风格对动态连贯性的影响分析

WAN2.2文生视频效果实测对比&#xff1a;不同SDXL风格对动态连贯性的影响分析 最近在玩WAN2.2文生视频模型时&#xff0c;我发现一个挺有意思的现象&#xff1a;虽然模型本身很强大&#xff0c;但生成的视频效果好不好&#xff0c;很大程度上取决于你选的“风格”。WAN2.2集成…...

AMD显卡专属优化:Ollama-for-amd本地大模型部署终极指南

AMD显卡专属优化&#xff1a;Ollama-for-amd本地大模型部署终极指南 【免费下载链接】ollama-for-amd Get up and running with Llama 3, Mistral, Gemma, and other large language models.by adding more amd gpu support. 项目地址: https://gitcode.com/gh_mirrors/ol/ol…...

从Stable Diffusion到多模态大模型:图文交错数据如何让AI学会‘边想边画’?

图文交错数据&#xff1a;多模态大模型实现"边想边画"的关键突破 当Stable Diffusion以惊艳的画质震惊世界时&#xff0c;人们很快发现它存在一个根本局限——这个能画出精美图像的模型&#xff0c;却无法理解自己笔下的内容。与此同时&#xff0c;擅长理解图像的多模…...

ESP32按键状态机设计:工业级去抖与多事件识别

1. ESP32-Button 库深度解析&#xff1a;面向工业级人机交互的按键状态机设计与实现1.1 工程背景与设计动因在嵌入式系统开发中&#xff0c;按键处理看似简单&#xff0c;实则暗藏诸多工程陷阱。裸写digitalRead()配合delay()的“抖动延时法”在教学Demo中尚可接受&#xff0c;…...

泛微E8流程管理进阶:从数据库角度理解流程状态与节点关系

泛微E8流程管理进阶&#xff1a;从数据库角度理解流程状态与节点关系 在企业的数字化转型浪潮中&#xff0c;流程管理系统扮演着越来越重要的角色。作为国内领先的协同办公平台&#xff0c;泛微E8凭借其强大的流程引擎和灵活的定制能力&#xff0c;成为众多企业的首选。然而&am…...

探索kedro:数据科学项目的高效管理框架

探索kedro&#xff1a;数据科学项目的高效管理框架 【免费下载链接】kedro Kedro is a toolbox for production-ready data science. It uses software engineering best practices to help you create data engineering and data science pipelines that are reproducible, ma…...

Kubernetes与Istio服务网格最佳实践

Kubernetes与Istio服务网格最佳实践 1. Istio服务网格核心概念 1.1 什么是服务网格 服务网格是一种专门用于处理服务间通信的基础设施层&#xff0c;它负责在现代云原生应用的复杂服务拓扑中可靠地传递请求。 1.2 Istio架构组件 控制平面&#xff1a;包含Pilot、Galley、Citade…...

【并发心法】别用 volatile 骗自己了!撕碎裸机并发的伪安全,用 C++ Atomics 与内存屏障镇压“乱序执行”的底层叛乱

摘要&#xff1a;在嵌入式 C/C 开发中&#xff0c;99% 的工程师误以为 volatile 是解决中断与主循环并发冲突的万能解药。本文将无情揭露这一长达数十年的认知毒瘤。我们将带你深入现代编译器&#xff08;GCC/Clang&#xff09;的优化黑盒与 ARM Cortex 高级内核的流水线深处&a…...

RAG-SQL Router实战:让AI智能判断文档与数据库查询,小白也能轻松搭建收藏版

本文介绍RAG-SQL Router系统&#xff0c;解决AI问答时判断信息来源&#xff08;文档或数据库&#xff09;的困境。通过LlamaIndex框架和OpenAI模型&#xff0c;实现智能路由决策&#xff0c;支持非结构化和结构化数据查询。提供完整代码和实战步骤&#xff0c;帮助开发者快速搭…...

基于RexUniNLU的Linux系统日志智能分析方案

基于RexUniNLU的Linux系统日志智能分析方案 1. 引言 每天面对海量的Linux系统日志&#xff0c;是不是感觉头大&#xff1f;服务器突然卡顿&#xff0c;排查问题就像大海捞针&#xff0c;一行行翻日志看得眼睛都花了。传统的关键词搜索和正则匹配已经跟不上现代运维的需求&…...