数据可视化:动态柱状图

news2025/1/16 7:51:58

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

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

我先整个活

(๑′ᴗ‵๑)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 ThemeType

bar1 = 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轴添加GDP
        y_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.coloradmin.cn/o/1172486.html

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

相关文章

安装 2023最新版本的Tableau Desktop 时出现“0x80070643”错误

安装失败的原因: “0x80070643”错误是Microsoft错误。 必需的安装组件无法启动,通常是C库,或者使用了无效的操作系统版本。 通过控制面板——程序与功能可以查看到自己电脑Microsoft Visual C的版本,像我的话是比较低的&…

第四章IDEA操作Maven

文章目录 创建父工程开启自动导入配置Maven信息创建Java模块工程创建 Web 模块工程 在IDEA中执行Maven命令直接执行手动输入 在IDEA中查看某个模块的依赖信息工程导入来自版本控制系统来自工程目录 模块导入情景重现导入 Java 类型模块 导入 Web 类型模块 创建父工程 开启自动导…

【GitHub】Watch、Star、Fork、Follow 有什么区别?

目录 一、前言二、区别1. Watch2. Star3. Fork4. Follow 一、前言 GitHub 是最受欢迎的代码托管平台之一,拥有大量的开源代码可供学习。 Github 中也有类似 “点赞”、“收藏”、“加关注” 的功能。 下面介绍下,GitHub 中 Watch、Star、Fork、Follow 有…

uni-app华为审核被拒,驳回原因:您的应用在运行时,未见向用户告知权限申请的目的

华为审核被拒&#xff1a; 您的应用在运行时&#xff0c;未见向用户告知权限申请的目的&#xff0c;向用户索取(相机存)等权限&#xff0c;不符合华为应用市场审核标准。 <uni-popup ref"perpopup" type"center" :mask-clickfalse><view class&qu…

幂等性(防重复提交)

文章目录 1. 实现原理2.使用示例3. Idempotent注解4. debug过程 主要用途&#xff1a;防止用户快速双击某个按钮&#xff0c;而前端没有禁用&#xff0c;导致发送两次重复请求。 1. 实现原理 幂等性要求参数相同的方法在一定时间内&#xff0c;只能执行一次。本质上是基于red…

Leetcode-509 斐波那契数列

使用循环 class Solution {public int fib(int n) {if(n 0){return 0;}if(n 1){return 1;}int res 0;int pre1 1;int pre2 0;for(int i 2; i < n; i){res pre1 pre2;pre2 pre1;pre1 res;}return res;} }使用HashMap class Solution {private Map<Integer,Int…

E-Office(泛微OA)前台任意文件读取漏洞复现

简介 泛微E-Office是一款企业级的全流程办公自动化软件&#xff0c;它包括协同办公、文档管理、知识管理、工作流管理等多个模块&#xff0c;涵盖了企业日常工作中的各个环节。在该产品前台登录页存在文件读取漏洞。 officeserver.php文件存在任意文件读取漏洞&#xff0c;通…

[100天算法】-有序矩阵中第K小的元素(day 58)

题目描述 给定一个 n x n 矩阵&#xff0c;其中每行和每列元素均按升序排序&#xff0c;找到矩阵中第 k 小的元素。 请注意&#xff0c;它是排序后的第 k 小元素&#xff0c;而不是第 k 个不同的元素。示例&#xff1a;matrix [[ 1, 5, 9],[10, 11, 13],[12, 13, 15] ], k …

如何实现多租户系统

shigen日更文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 不知道为什么&#xff0c;最近老是有一些失眠&#xff0c;凌晨睡&#xff0c;两点半还在醒着。脑子里想着自己生…

手动关闭PS中的TopazStudio2的登录窗口

2021 adobe photoshop Topaz Studio 2 不是使用防火墙出站规则&#xff0c;是手动关闭的解决方案 点击社区-切换用户&#xff0c;登录窗口会出现X&#xff0c;可以手动关闭

VBA根据Excel内容快速创建PPT

示例需求&#xff1a;根据Excel中选中的单元格内容&#xff08;3列&#xff09;如下图所示&#xff0c;在已打卡的PowerPoint文件中创建页面。 新增PPT Slide页面使用第二个模板页面&#xff0c;其中包含两个文本占位符&#xff0c;和一个图片占位符。将Excel选中区域中前两列写…

Nginx 配置详细讲解

Nginx.conf 配置文件分为三部分&#xff0c;分别为main块、events块、http块&#xff08;http块又包含server块和location块&#xff09;&#xff0c;如下图。 第一部分&#xff1a;main块(全局块) main块主要是设置一些影响Nginx服务器整体运行的配置指令&#xff0c;主要包括…

2.8 CSS 伸缩盒模型

1.模型简介 传统布局是指:基于传统盒状模型&#xff0c;主要靠: display 属性 position 属性float 属性。2009年&#xff0c;w3C提出了一种新的盒子模型——Flexible Box(伸缩盒模型&#xff0c;又称:弹性盒子)。它可以轻松的控制:元素分布方式、元素对齐方式、元素视觉顺序..…

0008Java安卓程序设计-ssm基于Android平台的健康管理系统

文章目录 **摘要**目录系统实现开发环境 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,…

那些看起来高大上的封装函数

什么 ToGray 只支持3通道图像&#xff0c; 让我看看怎么个事 就这么生硬的加了个判断 好家伙 调用了下opencv &#xff0c;通道数都不判断一下

Java多线程面试题:如何在多个子线程中捕获异常并引发主线程异常?

亲爱的小伙伴们&#xff0c;大家好&#xff01;我是你们的小米&#xff0c;今天我要和大家分享一个热门的技术话题——"面试题&#xff1a;多个子线程中&#xff0c;其中一个子线程异常时主线程如何抛出异常并返回&#xff1f;"。这是在面试中经常被问到的问题&#…

【多线程】Lambda表达式

package org.example;public class TestLambda {public static void main(String[] args) {Like likenew Like();like.lambda();}}//定义一个函数式接口 interface ILike{void lambda(); }//实现类 class Like implements ILike{Overridepublic void lambda() {System.out.prin…

Vue Vue3

1、创建VUE3工程 使用vue-cli创建&#xff1a; ## 查看vue/cli版本&#xff0c;确保vue/cli版本在4.5.0以上 vue --version ## 安装或者升级你的vue/cli npm install -g vue/cli ## 创建 vue create vue_test ## 启动 cd vue_test npm run serve 使用vite创建&#xff1a; …

【笔记】单片机卡死的八大原因和解决方法

在微控制器上&#xff0c;程序卡住&#xff08;即停止执行&#xff09;可能有多种原因。下面我将列举一些常见的原因&#xff0c;并提供一些可能导致程序卡住的示例情况。请注意&#xff0c;这里只是一些示例&#xff0c;并不能穷尽所有可能的情况。 1. 死循环&#xff08;Infi…

基于若依的ruoyi-nbcio流程管理系统增加仿钉钉流程设计(六)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 这节主要讲条件节点与并发节点的有效性检查&#xff0c;主要是增加这两个节点的子节点检查&#xff0c;因为…