第一阶段-第十二章 Python基础的综合案例(数据可视化-动态柱状图)

目录

  • 引、案例效果
  • 一、基础柱状图的构建
    •   1.学习目标
    •   2.通过Bar构建基础柱状图
    •   3.反转x和y轴
    •   4.数值标签在右侧
    •   5.本节的演示
    •   6.本小节的总结
  • 二、基础时间线柱状图
    •   1.学习目标
    •   2.时间线
    •   3. 自动播放
    •   4.时间线的主题
    •   5.本节的代码演示
    •   6.本小节的总结
  • 三、GDP动态柱状图绘制
    •   1.学习目标
    •   2. 列表的排序sort方法
    •   3. 需求分析
    •   4.数据处理
    •   5.准备时间线
    •   6. 自动播放和绘图
    •   7.本节的代码演示
      •   (1)列表的sort方法的演示
      •   (2)GDP动态柱状图的演示

  说明:该文章是学习 黑马程序员在B站上分享的视频 黑马程序员python教程,8天python从入门到精通而记录的笔记,笔记来源于本人。 若有侵权,请联系本人删除。笔记难免可能出现错误或笔误,若读者发现笔记有错误,欢迎在评论里批评指正。此笔记对应的doc文件的百度网盘下载链接为 Python入门(黑马)的学习笔记,提取码:1b3k。另外,本次笔记加了 gif动图,使用免费的potplayer播放器可以控制gif的播放进度。
在这里插入图片描述 在这里插入图片描述

引、案例效果

在这里插入图片描述
在这里插入图片描述

一、基础柱状图的构建

  1.学习目标

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

  2.通过Bar构建基础柱状图

在这里插入图片描述

  3.反转x和y轴

在这里插入图片描述

  4.数值标签在右侧

在这里插入图片描述

  5.本节的演示

  先打开软件,右键创建一个名为“07_基础柱状图开发”的py文件。
在这里插入图片描述在这里插入图片描述
  先编写最基础的柱状图代码,运行并查看效果。

"""
演示基础柱状图的开发
"""from pyecharts.charts import Bar# 使用Bar构建基础柱状图
bar = Bar()# 添加x轴数据
bar.add_xaxis(["中国", "美国", "英国"])
# 添加y轴数据
bar.add_yaxis("GDP", [30, 20, 10])# 绘图
bar.render("基础柱状图.html")

在这里插入图片描述
  继续编写代码并右键运行。代码如下,可参考注释进行理解。

"""
演示基础柱状图的开发
"""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")

在这里插入图片描述

  6.本小节的总结

在这里插入图片描述

二、基础时间线柱状图

  1.学习目标

  掌握基础的时间线配置动态图表;掌握设置主题更改颜色样式。

  2.时间线

在这里插入图片描述
  如下图,除了图表会动外,下面会动的结点就是时间线。它会不断地按照点1向点2的方向进行切换,相应地,柱状图也会随之切换。在这里插入图片描述
在这里插入图片描述

  3. 自动播放

在这里插入图片描述

  4.时间线的主题

在这里插入图片描述

  5.本节的代码演示

  先打开软件,右键创建一个名为“08_基础时间线柱状图开发”的py文件。
在这里插入图片描述
在这里插入图片描述
  编写代码并右键运行。代码如下,可参考注释进行理解。

"""
演示带有时间线的柱状图开发
"""from pyecharts.charts import Bar, Timeline
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"))
bar1.reversal_axis()bar2 = Bar()
bar2.add_xaxis(["中国", "美国", "英国"])
bar2.add_yaxis("GDP", [50, 50, 50],label_opts=LabelOpts(position="right"))
bar2.reversal_axis()bar3 = Bar()
bar3.add_xaxis(["中国", "美国", "英国"])
bar3.add_yaxis("GDP", [70, 60, 60],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  # 是否循环自动播放)# 绘图    注意:此时绘图是使用时间线对象绘图,而不是bar对象了     b站网友说循环+bar也可以,不过我想应该没这么方便
timeline.render("基础时间线柱状图.html")

在这里插入图片描述

  6.本小节的总结

在这里插入图片描述

三、GDP动态柱状图绘制

  1.学习目标

  掌握列表的sort方法并配合lambda匿名函数完成列表排序;完成图表所需的数据处理;完成GDP动态图表绘制。

  2. 列表的排序sort方法

在这里插入图片描述在这里插入图片描述

  3. 需求分析

在这里插入图片描述

  4.数据处理

  如图所示,文件“1960-2019全球GDP数据.csv”是本次使用的数据(文件可到黑马程序员的粉丝群或者 人的百度网盘上下载),通过记事本打开,发现它是一堆通过逗号和换行符来分隔的数据格式。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

  5.准备时间线

在这里插入图片描述

  6. 自动播放和绘图

在这里插入图片描述

  7.本节的代码演示

  (1)列表的sort方法的演示

  先打开软件,右键创建一个名为“09_拓展知识点-列表的sort方法”的py文件。
在这里插入图片描述
在这里插入图片描述
  然后,编写代码并右键运行。代码如下,可参考注释进行理解。

"""
扩展列表的sort方法
在学习了将函数作为参数传递后,我们可以学习列表的sort方法来对列表进行自定义排序
"""# 准备列表
my_list = [["q", 33], ["b", 55], ["c", 11]]# 排序,基于带名函数
def choose_sort_key(element):return element[1]my_list.sort(key=choose_sort_key, reverse=True)  # sort会将my_list的每一个元素传给函数choose_sort_key
print(f"基于带名函数的排序结果:{my_list}")# 排序,基于lambda函数
my_list = [["q", 33], ["b", 55], ["c", 11]]
my_list.sort(key=lambda element: element[1], reverse=True)
print(f"基于lambda函数的排序结果:{my_list}")

在这里插入图片描述

  (2)GDP动态柱状图的演示

  首先,右键创建一个名为“10_ GDP动态柱状图开发”的py文件。
在这里插入图片描述
  编写代码时,需注意文件“1960-2019全球GDP数据.csv”的编码格式为“ANSI”,与之前不同,“ANSI”是Windows系统的一个默认编码格式,它是跟随操作系统的语言版本来的,本人的系统使用的语言是中文,而中文默认的编码为“GB2312”,所以代码中使用open在打开文件时所设的格式也应当为“GB2312”。
在这里插入图片描述
  读取到文件数据后,需要删除第一行数据。
在这里插入图片描述
  如图,数据处理时,首先需要将数据转为带有一定格式的字典。
在这里插入图片描述
  继续编写代码并右键运行。代码如下,可参考注释进行慢慢理解。

"""
演示第三个图表:GDP动态柱状图开发
"""
from pyecharts.charts import Bar, Timeline
from pyecharts.options import LabelOpts, TitleOpts, TimelineCheckPointerStyle
from pyecharts.globals import ThemeType# ----------------------------1.获取数据------------------------
# 读取数据
f = open("D:/test/1-12/1960-2019全球GDP数据.csv", "r", encoding="GB2312")
data_lines = f.readlines()  # 按行读取每一行数据
# 关闭文件
f.close()
# 删除第一行数据
data_lines = data_lines[1:]  # 或    data_lines.pop(0)
# print(data_lines)  # 中途测试代码# -----------------------------2.处理数据------------------------
# 每行数据都是字符串,很难处理。 故将数据转换成字典存储,格式为:
# { 年份: [ [国家, gdp], [国家,gdp], ......  ], 年份: [ [国家, gdp], [国家,gdp], ......  ], ...... }
# 按照这样的格式便于处理,按照年份作为时间线,国家和gdp为一个条形图中一个柱的两个参数# 2.1 先定义一个字典对象,获取数据
data_dict = {}
# 2.2 把数据整理好并放入字典中
for line in data_lines:line.strip()  # 去掉换行符year = int(line.split(",")[0])  # 年份country = line.split(",")[1]  # 国家gdp = float(line.split(",")[2])  # gdp数据#  在给字典添加每一个元素的键值对中的值时,需判断这个值[国家, gdp]是否是这一年中所加的第一个数据。#  如果是第一个,那么说明还没有加入对应的键值对的关键字(即年份)#  --> 如何判断字典里面有没有指定的key呢?try:data_dict[year].append([country, gdp])  # 年份不存在,在关键字year下继续添加[country, gdp]except KeyError:data_dict[year] = []  # 年份不存在,加入新的键值对data_dict[year].append([country, gdp])# print(data_dict)  # 中途测试代码
# -----------------------------3.绘图------------------------
# 3.1 排序年份   (字典是靠键值对的关键字查询数据的,没有顺序)
sorted_year_list = sorted(data_dict.keys())
# print(sorted_year_list)  # 中途测试代码# 3.2 取出每年gdp前8的国家,然后构建每一年的柱状图,并按时间线设置好对应的柱状图
# 创建时间线对象,并设置主题
timeline = Timeline({"theme": ThemeType.LIGHT})for year in sorted_year_list:# 将每一年的各个国家的gdp按照从大到小顺序进行排序data_dict[year].sort(key=lambda element: element[1], reverse=True)# 取出本年份前8的国家year_data = data_dict[year][:8]x_data = []  # 用来存放当年x轴数据y_data = []  # 用来存放当年y轴数据for country_gdp in year_data:x_data.append(country_gdp[0])  # 获取当年gdp第country_gdp名的国家y_data.append(country_gdp[1] / 1e8)  # 获取当年gdp第country_gdp名的gdp,单位(亿)# 构建柱状图bar = Bar()x_data.reverse()  # 反转数据,将前8按照gdp从小到大的顺序进行排序 --> 柱状图的图形的从上到下,依次是gdp从大到小的国家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))# 3.3 设置时间线自动播放
timeline.add_schema(play_interval=300,  # 自动播放的时间阿隔,单位毫砂is_timeline_show=True,  # 是否在自动播放的时候,显示时间线is_auto_play=True,  # 是否自动播放is_loop_play=False,  # 是否循环自动播放label_opts=LabelOpts(is_show=True,color="#4169E1")
)# 3.4 绘图
timeline.render("1960-2019年全球GDP前8的国家.html")

在这里插入图片描述
  好了,本章的笔记到此结束,谢谢大家阅读。

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

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

相关文章

Java经典面试解析:服务器卡顿、CPU飙升、接口负载剧增

01 线上服务器CPU飙升,如何定位到Java代码 解决这个问题的关键是要找到Java代码的位置。下面分享一下排查思路,以CentOS为例,总结为4步。 第1步,使用top命令找到占用CPU高的进程。 第2步,使用ps –mp命令找到进程下…

React中使用Redux

1.为什么要使用redux redux是一个专门用于状态管理的一个库,和vue中的vuex功能类似。其中核心点就是状态的管理。虽然我们无论在vue还是在react中我们组件间的通行都可以使用消息总线或者父子组件间的消息传递来进行操作。但是如果我们需要A组件的状态在其他十个或者…

面试题汇总——Java集合(Collection和Map)

1简单介绍一下Java集合类 位置:Java的所有集合类都在java.util包下,从JDK5.0开始为了处理多线程环境下的并发安全问题,又在java.util.concurrent包下提供了一些多线程支持的集合类。 内容:Java的集合类主要有两个接口派生而出:Collection和Map。 1.1Collection Collect…

重封装Ehcache与Redis模板以便于一二级缓存同步数据(二)

参考: 一级缓存二级缓存的获取与更新顺序(一) 简单封装Ehcache与RedisTemplate模版 通常使用一二级缓存时,必须保持一二级缓存数据数据与数据库中数据保持一致 ;此时可以简单封装下,一二级缓存的相关接口,便于我…

多元函数的混合偏导数

直接看图: 引自知乎:点击跳转知乎链接

记录自己的程序移植经历(裸机软PLC C语言程序移植到Linux)

先说一下本人的基础,本人是一个小公司初来乍到的实习生,拿到这个任务的时候,不懂PLC,而对于linux只懂一点点皮毛的操作。结果硬是把程序移植完毕且能顺利运行。 该程序是嵌入式软PLC,主要代码是对四元式指令的解析。说…

可移植性测试包括哪些

可移植性测试 可移植性是指应用程序能够安装到不同的环境中,在不同的环境中使用,甚至可以移动到不同的环境中。当然,前两者对所有系统都很重要。就PC软件而言,鉴于操作系统、共存和互操作应用程序、硬件、带宽可用性等方面的快速…

Kubespray v2.22.1 在线部署 kubernetes v1.26.5 集群

文章目录 1. 介绍2. 预备条件3. 配置 hostname4. yum5. 下载介质5.1 git 下载5.2 下载 kubespray v2.22.1 6. 编写 inventory.ini7. 配置互信8. 安装 ansible9. 关闭防火墙10. 安装 docker11. 配置内核参数12. 启动容器 kubespray13. 部署14. 配置连接集群 1. 介绍 kubespray​…

【005】基于深度学习的图像语 通信系统

摘要 语义通信是一种新颖的通信方式,可通过传输数据的语义信息提高带宽效率。提出一种用于无线图像传输的系统。该系统基于深度学习技术开发并以端到端(E2E)的方式进行训练。利用深度学习实现语义特征的提取和重建,在发送端提取信…

干货整理,自动化测试-数据依赖解决方案详细,一篇通透...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 解决自动化数据依…

分布式ELK 企业级日志分析系统

一、ELK的相关知识 1.ELK简介 ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 ElasticSearch:是基于Lucene(一个全文检…

postman:模拟发送一个需要 cookie 认证的请求

目录 前言: 1、chrome 已安装插件 intercept。 2、chrome 浏览器要设置打开,在运行期间浏览器要一直打开。 3、本人是用 fiddler 对 app 的请求进行抓包,也可以使用其他工具。查看 headers 里的 cookie,并复制。 4、将复制的…