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.什么情况下,可以…

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对象// 是不是…

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

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

基于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…

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

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

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

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

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

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

加速新能源汽车产品迭代:融合前沿科技的重要性

新能源汽车新质生产力提升咨询方案 一、新能源汽车企业行业目前发展现状及特点: 1、快速增长 2、技术迭代快 3、竞争加剧 二、新能源汽车企业发展新质生产力面临的痛点: 1、技术创新压力巨大 2、市场竞争激烈 3、供应链稳定性欠缺 4、成本控制压…

微信小程序实战:无痛集成腾讯地图服务

在移动互联网时代,地图服务无疑是应用程序中最常见也最实用的功能之一。无论是导航定位、附近搜索还是路线规划,地图服务都能为用户提供极大的便利。在微信小程序开发中,我们可以轻松集成腾讯地图服务,为小程序赋能增值体验。本文将详细介绍如何在微信小程序中集成使用腾讯地图…

jmeter中参数加密

加密接口常用的方式有: MD5,SHA,HmacSHA RSA AES,DES,Base64 压测中有些参数需要进行加密,加密方式已接口文档为主。 MD5加密 比如MD5加密的接口文档: 请求URL:http://101.34.221…

面试算法-105-相交链表

题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回…

各大pdf转word软件都用的哪家的ocr引擎?

国内一般的PDF软件一般都调用某国际PDF原厂的OCR接口,但这家公司是主要做PDF,在OCR方面并不专注,一些不是很复杂的场景还能应付得过来,复杂一点的效果就强差人意了,推荐用金鸣表格文字识别系统,它主要有以下…

抖音视频关键词无水印下载软件|手机网页视频批量提取工具

全新视频关键词无水印下载软件,助您快速获取所需视频! 随着时代的发展,视频内容已成为人们获取信息和娱乐的重要途径。为了方便用户获取所需视频,推出了一款功能强大的视频关键词无水印下载软件。该软件主要功能包括关键词批量提取…

yolov8直接调用zed相机实现三维测距(python)

yolov8直接调用zed相机实现三维测距(python) 1. 相关配置2. 相关代码3. 实验结果 相关链接 此项目直接调用zed相机实现三维测距,无需标定,相关内容如下: 1.yolov5直接调用zed相机实现三维测距(python&#…

ISAC代码仿真学习笔记

文章目录 A. MIMO Communication ModelB. MIMO Radar Model III. Joint Waveform and Phase Shift Matrix Design for Given Radar BeampatternA. Problem FormulationB. Proposed Algorithm V. S IMULATION RESULTS A. MIMO Communication Model 用户处的接收信号矩阵由 Y …

Spring Boot 实现定时任务动态管理

前言 本文主要介绍了SpringBoot架构下动态定时任务的使用,定时任务表达式配置在数据库中,通过反射执行到目标方法。 Quartz Quartz 是一个开源的作业调度框架,支持分布式定时任务,Quartz定时任务据我了解可分为Trigger(触发器&…