Python学习从0到1 day18 Python可视化基础综合案例 3.动态柱状图

夜色难免黑凉,前行必有曙光。

                            —— 24.3.25

目录:

01.基础柱状图

02.基础时间线柱状图

03.GDP动态柱状图绘制

一、基础柱状图构建

掌握构建一个基础的柱状图并能够反转x和y轴

1.通过Bar功能构建基础柱状图

'''
基础柱状图的开发
'''# 导包 Bar包,生成柱状图对象
from pyecharts.charts import Bar# 构建基础柱状图对象
bar = Bar()# 添加x轴数据
bar.add_xaxis(["中国","美国","英国"])# 添加y轴数据,将y轴数据变为右侧
bar.add_yaxis("GDP",[30,20,10],label_opts = LabelOpts(position = "right"
))# 绘图
bar.render("基础柱状图.html")# 设置数值标签在右侧
'''
bar.add_yaxis("GDP",[30,20,10],lable_opts = LabelOpts(position = "right"
))
'''

2.反转x和y轴

'''
基础柱状图的开发
'''# 导包
# 使用Bar功能构建基础柱状图
from pyecharts.charts import Bar
# 反转x和y轴
from pyecharts.options import LabelOpts# 构建基础柱状图对象
bar = Bar()# 添加x轴数据
bar.add_xaxis(["中国","美国","英国"])# 添加y轴数据,将y轴数据变为右侧,label_opts数值放在右侧
bar.add_yaxis("GDP",[30,20,10],label_opts = LabelOpts(position = "right"
))# 反转x轴和y轴,调用reversal_axis方法
bar.reversal_axis()# 绘图
bar.render("基础柱状图.html")# 设置数值标签在右侧
'''
bar.add_yaxis("GDP",[30,20,10],lable_opts = LabelOpts(position = "right"
))
'''

3.总结

二、基础时间线柱状图

01.掌握基础的时间线配置动态图表

02.掌握设置主题更改颜色样式

1.创建时间线

Timeline() — 时间线

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

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

基础时间线柱状图

# 演示带有时间线的柱状图开发# 导包 Bar功能构建柱形图
from pyecharts.charts import Bar,Timeline# labelOpts包,label_opts数据放在右侧
from pyecharts.options import LabelOpts
bar1 = Bar()
bar1.add_xaxis(["中国","美国","英国"])
bar1.add_yaxis("GDP",[30,30,20],label_opts=LabelOpts(position="right"))
# 反转x,y轴
bar1.reversal_axis()bar2 = Bar()
bar2.add_xaxis(["中国","美国","英国"])
bar2.add_yaxis("GDP",[50,50,50],label_opts=LabelOpts(position="right"))
# 反转x,y轴
bar2.reversal_axis()bar3 = Bar()
bar3.add_xaxis(["中国","美国","英国"])
bar3.add_yaxis("GDP",[70,60,60],label_opts=LabelOpts(position="right"))
# 反转x,y轴
bar3.reversal_axis()# 构建时间线对象
timeline = Timeline()# 在时间线内添加柱状图对象
timeline.add(bar1,"点1")
timeline.add(bar2,"点2")
timeline.add(bar3,"点3")# 绘图
# 绘图使用时间线对象绘图,而不是bar对象
timeline.render("基础时间线柱状图.html")

2.设置自动播放

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

3.时间线设置主题

# 构建时间线对象
# 主题设置 将颜色进行设置
timeline = Timeline({"theme":ThemeType.LIGHT}
)

随时间自动变化时间柱状图

# 演示带有时间线的柱状图开发# 导包 Bar功能构建柱形图
from pyecharts.charts import Bar,Timeline
# 导入labelOpts包,将数据放在右边
from pyecharts.options import LabelOpts
# 时间线设置主题包
from pyecharts.globals import ThemeTypebar1 = Bar()
bar1.add_xaxis(["中国","美国","英国"])
bar1.add_yaxis("GDP",[30,30,20],label_opts=LabelOpts(position="right"))
# 反转x,y轴
bar1.reversal_axis()bar2 = Bar()
bar2.add_xaxis(["中国","美国","英国"])
bar2.add_yaxis("GDP",[50,50,50],label_opts=LabelOpts(position="right"))
# 反转x,y轴
bar2.reversal_axis()bar3 = Bar()
bar3.add_xaxis(["中国","美国","英国"])
bar3.add_yaxis("GDP",[70,60,60],label_opts=LabelOpts(position="right"))
# 反转x,y轴
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       # 是否循环自动播放
)# 绘图
# 绘图使用时间线对象绘图,而不是bar对象
timeline.render("基础时间线柱状图.html")

4.总结

1.什么是时间线?

from pyecharts.charts import Timeline
timeline = Timeline()

2.自动播放

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

3.如何设置主题

# 构建时间线对象
# 主题设置 将颜色进行设置
timeline = Timeline({"theme":ThemeType.LIGHT}
)

 三、GDP动态柱状图绘制

01.掌握列表的sort方法并配合lambda匿名函数完成列表排序

02.完成图表所需的数据处理

03.完成GDP动态图表绘制

1.列表的sort方法

sorted函数,可以对数据容器进行排序

我们需要对列表进行排序,并指定排序规则,sorted函数就无法完成了

我们补充学习列表的sort方法

使用方式:

列表.sort(key=选择排序依据的函数,reverse=True|False)

        参数key,是要求传入一个函数,表示将列表的每一个元素都传入函数中,返回排序的依据

        参数reverse,是否反转排序结果,True表示降序,False表示升序

排序,基于带名函数

# 准备列表
my_list = [["a",33],["b",55],["c",11]]# 排序,基于带名函数
def choose_sort_key(element):return element[1]# reverse默认反转,True是反转
my_list.sort(key=choose_sort_key,reverse=True)
print(my_list)

排序,基于lamba匿名函数

# 排序,基于lamba匿名函数
my_list.sort(key=lambda element:element[1],reverse=True)print(my_list)

2.需求分析

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

1.GDP数据处理为亿级

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

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

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

5.设置了主题为LIGHT

3.列表的sort方法

带名函数形式

'''
学习列表的sort方法来对列表进行自定义排序
'''# 准备列表
my_list = [["a",33],["b",55],["c",11]]# 排序,基于带名函数
def choose_sort_key(element):return element[1]# reverse默认反转,True是反转
my_list.sort(key=choose_sort_key,reverse=True)
print(my_list)

排序,基于lamba匿名函数

'''
学习列表的sort方法来对列表进行自定义排序
'''# 准备列表
my_list = [["a",33],["b",55],["c",11]]# 排序,基于lamba匿名函数
my_list.sort(key=lambda element:element[1],reverse=True)print(my_list)

4.处理数据

将数据转换为字典存储,格式为:

{年份:[[国家,gdp],[国家,gdp],……],年份:[[国家,gdp],[国家,gdp],……},……}

"""
演示第三个图表:GDP动态柱状图开发
"""
from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType# 读取数据
f = open("E:”/python.learning/动态柱状图数据/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")

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

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

相关文章

吴恩达2022机器学习专项课程(一) 第一周课程实验:成本函数(Lab_04)

问题预览 1.实验目的是什么? 2.一元线性回归的一元是什么意思? 3.如何实现一元线性回归的成本函数? 4.b确定,w和成本函数走势的关系是? 5.w,b和等高线图的关系是? 6.什么情况下,可以…

linux查看本机开放哪些端口,以及某个端口是否开放

一、查看Linux系统上已经打开的端口 netstat -tuln二、查看某个端口是否开放 以3306端口为例: 1、nestat sudo netstat -tuln | grep 3306这条命令将列出当前正在运行的网络服务,并筛选出端口号为3306的服务。如果3306端口处于开放状态,则…

反相器的工艺结构原理及选型参数总结

🏡《总目录》 目录 1,概述2,工作原理3,结构特点3.1,输入与输出电平相反3.2,增益小于13.3,输入阻抗高,输出阻抗低4,工艺流程4.1,硅晶圆准备4.2,电路设计4.3,光刻图形定义4.4,离子注入4.5,沉积4.6

javaWeb个人日记(博客)管理系统

一、简介 在快节奏的生活中,记录生活点滴、感悟和思考是一种重要的方式。基于此,我设计了一个基于JavaWeb的个人日记本系统,旨在帮助用户轻松记录并管理自己的日记。该系统包括登录、首页、日记列表、写日记、日记分类管理和个人中心等功能&…

动态多态的注意事项

大家好: 衷心希望各位点赞。 您的问题请留在评论区,我会及时回答。 多态的基本概念 多态是C面向对象三大特性之一(多态、继承、封装) 多态分为两类: 静态多态:函数重载和运算符重载属于静态多态&#x…

深入了解 Linux 中的 MTD 设备:/dev/mtd* 与 /dev/mtdblock*

目录 前言一、什么是MTD子系统?二、 /dev/mtd* 设备文件用途注意事项 三、/dev/mtdblock* 设备文件用途注意事项 三、这两种设备文件的关系四、关norflash的一些小知识 前言 在嵌入式Linux系统的世界里,非易失性存储技术扮演着至关重要的角色。MTD&#…

Spring Aop 源码解析(下)

ProxyFactory选择cglib或jdk动态代理原理 ProxyFactory在生成代理对象之前需要决定到底是使用JDK动态代理还是CGLIB技术: config就是ProxyFactory对象,把自己传进来了,因为ProxyFactory继承了很多类,其中一个父类就是ProxyConfig // config就是ProxyFactory对象// 是不是…

开发npm上传发布

第一步:注册npm账号 首先去官网注册一个npm账号,npm官网 第二步:创建项目 新建文件夹,并执行npm init 填写对应的信息name就是插件名称。 文件夹下就会生成一个package.json文件。 你可以在项目编辑你的插件。 第三步&…

第十二届蓝桥杯物联网试题(省赛)

思路: 这个考了一个RTC的配置,RTC我只配过一次,所以有些生疏,还是不能大意,一些偏僻的考点还是要多练,在获取RTC时间的时候也遇到一些bug,这个后续会用一篇博客将最近遇到的BUG都总结一下 主要的难点还是…

wordpress将图片默认连接到媒体文件

wordpress上传图片后,图片链接可以选择链接到媒体文件或附件页面。如果选择链接到媒体文件,就是链接到了图片的地址了。如果选择链接到附件页面,就是链接到图片所在的attachment页面了。 具体链接到哪里,在wordpress模板制作时&a…

基于GA优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1卷积神经网络(CNN)在时间序列中的应用 4.2 长短时记忆网络(LSTM)处理序列依赖关系 4.3 注意力机制(Attention) 5…

Android15功能和 API 概览

Android 15 面向开发者引入了一些出色的新功能和 API。以下部分总结了这些功能,以帮助您开始使用相关 API。 如需查看新增、修改和移除的 API 的详细列表,请参阅 API 差异报告。如需详细了解新的 API,请访问 Android API 参考文档&#xff0…

FastAPI+React全栈开发03 为什么使用MongoDB

Chapter01 Web Development and the FARM Stack 03 Why use MongoDB FastAPIReact全栈开发03 为什么使用MongoDB In the following paragraphs, we will go through the main features of our selected database system - MongoDB - and give a high-level overview of the …

VSCode基本配置(编辑器)

VSCode基本配置 设置快捷键:Ctrl , 下载中文插件:Chinese,重启一下,如果没有,Ctrl Shift P,搜索:Display Language 主题推荐:Solarized Dark,快捷键:Ct…

速盾:cdn加速效果好吗

CDN(Content Delivery Network)是一种通过分布在全球多个节点的服务器来加速网络内容传输的技术。CDN加速效果好不好,需要从几个方面来考量。 首先,CDN可以显著提高网站的加载速度。由于CDN服务器分布在全球各地,用户…

C++零基础入门学习视频课程

教程介绍 本专题主要讲解C基础入门学习,所以不会涉及很深入的语法和机制。但会让你整体多面的了解和学习C的核心内容,快速学习使用C,我们的目标是先宏观整体把握,在深入各个击破! 学习地址 链接:https:/…

多线程合并练习题,线程安全(售票任务引入)--学习JavaEE的day30

day30 练习(day29) 注意代码注释,里面涉及代码实现遇到问题及解决方案,由于理解方便没有单独出来 1.计算任务 1.计算任务,一个包含了2万个整数的数组,分拆了多个线程来进行并行计算,最后汇总出…

计算机视觉的研究方向

随着科技的快速发展,计算机视觉已成为人工智能领域的一颗璀璨明星。从识别照片中的人物,到自动驾驶汽车的视觉系统,再到医学诊断的辅助工具,计算机视觉正以前所未有的方式改变着我们的生活。在这篇文章中,我们将探讨计…

uniapp先显示提示消息再返回上一页

一、描述 在有些业务场景中,需要先弹出提示后,再返回上一页。 二、思路 使用定时器,先弹出提示消息,然后开个定时器俩秒后再执行,返回上一页的操作,并且清除定时器。 三、实现 uni.showToast({title: …

MySQL三种开窗函数详细用法,图文详解

开窗函数的详细用法 第一章、开窗函数的语法1.1)从聚合开窗函数讲起1.2)开窗函数之取值1.3)排名开窗函数 第一章、开窗函数的语法 开窗函数的语法为:over(partition by 列名1 order by 列名2 ),括号中的两个关键词par…