Python基础知识:整理16 使用pyecharts实现动态柱状图

news2025/1/31 11:20:38

1 基础柱状图的构建

from pyecharts.charts import Bar

bar = Bar()

bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.add_yaxis("商家B", [15, 6, 45, 20, 65, 90])


bar.render("./modules/bar_chart.html")


当我们想要x和y轴进行反转时,可以用以下的方式,反转之后数据还是在中间,我们需要将数据的位置放到右端


2 基础时间线柱状图的构建

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

bar1 = Bar()
bar1.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar1.add_yaxis("商家A", [5, 20, 36, 10, 75, 90], label_opts=LabelOpts(position="right"))
bar1.add_yaxis("商家B", [15, 6, 45, 20, 65, 90], label_opts=LabelOpts(position="right"))  # 反转之后,需要将数字放在右侧
bar1.reversal_axis()

bar2 = Bar()
bar2.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar2.add_yaxis("商家A", [10, 22, 45, 56, 8, 120], label_opts=LabelOpts(position="right"))
bar2.add_yaxis("商家B", [20, 10, 34, 45, 98, 78], label_opts=LabelOpts(position="right"))  # 反转之后,需要将数字放在右侧
bar2.reversal_axis()

# 绘制时间线对象
timeline = Timeline(
    {"theme": ThemeType.LIGHT}  # 设置主题
)
# 添加两个柱状图到时间线中
timeline.add(bar1, "2019")
timeline.add(bar2, "2020")

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

# 渲染图表并保存为HTML文件
timeline.render("./modules/bar_chart_timeLine.html")


 

3 综合案例(世界GDP动态柱状图)

# -- coding: utf-8 --
# 每年GDP前八的国家:
from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType
# 1. 打开文件
fr = open("./text/1960-2019全球GDP数据.csv", "r", encoding="GB2312")
data_lines = fr.readlines()
fr.close()

# 2. 数据处理
# 删除第一条数据
data1 = data_lines.pop(0)
# print(data1)

# 将数据转换为字典存储,格式为:
# {年份: [[国家1, 该国GDP数据], [国家2, 该国GDP数据], ...], 年份: [[国家2, 该国GDP数据], ...], ...}

# 先定义一个字典对象
data_dict = {}
for line in data_lines:
    year = int(line.split(",")[0])
    country = line.split(",")[1]
    gdp = float(line.split(",")[2])   # 有些数据采用了科学计数法,需要转换为浮点数

    # 判断字典中是否已经存在该年份的数据, 可以使用if 判断,也可以使用异常处理
    try:
        data_dict[year].append([country, gdp])   # 如果有这个key的话,直接append进去
    except KeyError:
        data_dict[year] = []  # 没有则创建
        data_dict[year].append([country, gdp])

# print(data_dict)


# 创建时间线对象
timeline = Timeline(
    {"theme": ThemeType.CHALK}
)

# 3.绘图
# 排序年份
sorted_year_list = sorted(data_dict.keys())   # 可以保证时间线中的年份顺序是正确的
# print(sorted_year_list)

for year in sorted_year_list:
    data_dict[year].sort(key=lambda x: x[1], reverse=True)

    # 取出本年份前八名的国家
    gdp_top8 = data_dict[year][:8]

    x_data = []
    y_data = []

    for country_gdp in gdp_top8:
        x_data.append(country_gdp[0])
        y_data.append(country_gdp[1] / 100000000)


    # 绘图
    bar = Bar()
    # 为了GDP高的在上面,所以我们需要将x、y轴进行反转
    x_data.reverse()
    y_data.reverse()
    bar.add_xaxis(x_data)
    bar.add_yaxis("GDP(亿元)", y_data, label_opts=LabelOpts(position="right"))

    # 反转
    bar.reversal_axis()

    # 设置每一年的图表标题
    bar.set_global_opts(
        title_opts=TitleOpts(title=f"{year}年GDP前八名图表", pos_left="center", pos_top="6%")

    )
    # 构建时间线
    timeline.add(bar, str(year))

"""
    for 循环每一年的数据,基于每一年的数据,创建每一年的bar对象
    然后将bar对象添加到时间线中
    注意:需要对每一年的数据进行排序,取出GDP前8的国家
    注意:需要对x轴的数据进行反转
"""

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


timeline.render("./modules/GDP8.html")

详细解释:


 



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

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

相关文章

一个用于批量给图片增加水印的Python库

本文推荐一个开源免费Python脚本,可以在指定目录及其子目录中批量给图像添加水印,当然,你也可以集成到你的Web应用中。 给图片、视频增加水印以确认版权或者增加效果,是在媒体内容信息经常需要用到的技术。本文推荐一个开源免费P…

Redis集群(主从复制)

主从复制:是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。 前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能 由主节点到从节点。 可以实现数据备份。即使当其中一台机器宕机其他机器还可以正…

如何运用AR技术提升制造效率?这里有答案!

当谈及AR技术在工业领域的应用,首先让人想到的是它为企业带来的巨大变革。从工业设计和制造到设备维护和维修,再到培训和技能传承以及设备操作和监测,AR技术凭借其独特的方式,帮助企业实现更高效的生产和运营。通过这些环节的优化…

office办公技能|word中的常见通配符使用

一、删除Word中含有指定内容的整行 操作方法: 1、快捷键 CtrlH,打开Word的查找替换窗口,单击【更多】按钮,勾选“使用通配符”。 2、在查找内容处,输入“替换内容*^13”,替换为处什么都不填。 3、单击【…

MySQL系列之数据导入导出

前言 大数据与云计算作为当今时代,数据要素发展的“动力引擎”,已经走进了社会生活的方方方面。而背后承载的云服务或数据服务的高效运转,起了决定作用。 作为数据存储的重要工具,数据库的品类和特性也日新月异。从树型、网络型…

第380场周赛挑战:二分,数位dp和KMP算法的综合运用

比赛地址 卡在第三题了,应该看看第4题kmp套模版的 一、最大频率元素计数 class Solution:def maxFrequencyElements(self, nums: List[int]) -> int:frequency {} # 哈希表用于统计频率max_freq 0 # 存储最大频率# 统计每个元素的频率for num in nums:i…

机器学习周报第28周

目录 摘要Abstract一、文献阅读1.题目:2.摘要3.问题描述4.过去方案5.论文方案6.论文模型7.相关代码 摘要 本周阅读了一篇混沌时间序列预测的论文,论文模型主要使用的是时间卷积网络(Temporal Convolutional Network,TCN&#xff…

1.3K Star,让发送短信变的更简单

Hi,骚年,我是大 G,我的公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值。 前言 在日常的开发过程中,短信的发送经常使用(尤其是中小型的外…

Java智能导诊系统 (3D人体导医)源码

智能导诊是一种利用人工智能技术来帮助患者进行自助问询及挂号服务的系统。通过智能导诊系统,患者可以输入自身疾病的症状表现,或选择身体部位,在系统的多维度计算下,系统会根据患者提供的信息精准推荐科室,并引导患者…

数据库备份脚本嘎嘎香,被秀到了!

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

c++qt-基本组件

1. Designer 设计师(掌握) Qt包含了一个Designer程序,用于通过可视化界面设计开发界面,保存的文件格式为.ui(界面文件)。界面文件内部使用xml语法的标签式语言。 在Qt Creator中创建项目时,选中…

r语言拟合曲线

r语言拟合曲线 #圆滑曲线 library(ggalt) library(ggplot2) df <- read.csv("lqs-1.csv",headerT) p2<-ggplot(datadf,aes(xx,yy))geom_point(size1) geom_smooth(span0.1)p2结果

Error: L6218E: Undefined symbol 系列错误汇总 (referred from main.o)

传送门 错误1&#xff1a; Undefined symbol(referred from main.o)错误2&#xff1a;Undefined_symbol _use_two_region memory 错误1&#xff1a; Undefined symbol(referred from main.o) Cube_GPIO\Cube_GPIO.axf: Error: L6218E: Undefined symbol LED_GPIO_Init (referr…

OpenCV4.x(C++)人脸检测(眼睛、侧脸、正脸)

一、前言 OpenCV是一款广泛使用的计算机视觉库&#xff0c;提供了许多强大的功能&#xff0c;包括人脸检测和识别。人脸分类器是OpenCV中用于人脸检测的关键工具之一&#xff0c;能够快速准确地检测出图像中的人脸。 本文将介绍如何使用OpenCV自带的人脸分类器&#xff0c;并…

【SpringMVC快速使用】1.@RestController @RequestMapping 2.logback的使用

背景&#xff1a;为何从这个最简单的 例子写起呢&#xff1f; 那是因为我们的管理后台之类的都是别人写的&#xff0c;我也听说了大家说&#xff1a;只用Post请求就足够了&#xff0c;但是却发现&#xff0c;在浏览器中测试时&#xff0c;默认是GET请求&#xff0c;如果直接写…

【论文阅读】Consistency Models

文章目录 IntroductionDiffusion ModelsConsistency ModelsDefinitionParameterizationSampling Training Consistency Models via DistillationTraining Consistency Models in IsolationExperiment Introduction 相比于单步生成的模型&#xff08;例如 GANs, VAEs, normalizi…

自行车商城网站网页设计与制作web前端设计html+css+js成品。电脑网站制作代开发。vscodeDrea

【自行车商城网站网页设计与制作web前端设计htmlcssjs成品。电脑网站制作代开发。vscodeDrea】 https://www.bilibili.com/video/BV1wT4y1p7jq/?share_sourcecopy_web&vd_sourced43766e8ddfffd1f1a1165a3e72d7605

Docker五部曲之四:Docker Compose

文章目录 前言Compose应用程序模型Compose规范顶层属性servicenetworkvolumesconfigssecrets 环境变量.env文件environment属性主机shell中的环境变量 Profiles&#xff08;剖面&#xff09;启动剖面自动启动剖面和依赖项解析 多compose.yml文件共享与扩展构建规范构建属性 部署…

MySQL主从复制配置(双主双从)

一、架构规划 一主多从可以缓解读的压力&#xff0c;但是如果主宕机了&#xff0c;所有从都不能写了&#xff0c;因此我们配置双主双从。 1、规划图 master1和master2互为主从关系&#xff0c;slave1是master1的从&#xff0c;slave2是master2的从。 2、环境准备 准备四台机…

浅谈对Maven的理解

一、什么是Maven Maven——是Java社区事实标准的项目管理工具&#xff0c;能帮你从琐碎的手工劳动中解脱出来&#xff0c;帮你规范整个组织的构建系统。不仅如此&#xff0c;它还有依赖管理、自动生成项目站点等特性&#xff0c;已经有无数的开源项目使用它来构建项目并促进团队…