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

news/2024/10/23 5:44:33/

目录

  • 引、案例效果
  • 一、基础柱状图的构建
    •   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.ppmy.cn/news/930591.html

相关文章

魔兽世界诞生记(上)

我们这家公司之所以成功,就是因为我们开发什么游戏不是由商人决定的,而是由开发人员决定的。 ——前暴雪首席设计师,暴雪游戏开发副总裁Rob Pardo 一、夭折的Nomad 1998年11月30日,由Rob Pardo和Shane Dabiri领导开发的的《星际争…

Sentinel整合OpenFegin

之前学习了openFeign的使用&#xff0c;我是超链接 现在学习通过Sentinel来进行整合OpenFegin。 引入OpenFegin 我们需要在当前的8084项目中引入对应的依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sta…

【动手学深度学习】--10.卷积神经网络

文章目录 卷积神经网络1.从全连接层到卷积1.1全连接层1.2平移不变性1.3局部性1.4卷积 2.卷积层2.1互相关计算2.2卷积层2.3图像中目标的边缘检测2.4学习卷积核 3.填充和步幅3.1填充3.2步幅 4.多输入多输出通道4.1多输入通道4.2多输出通道4.3 11卷积层 5.池化层5.1池化层5.2填充和…

七款酷炫的 Mac 屏保

原文作者&#xff1a; Ankur Biswas 翻译&#xff1a;weakishLeanCloud 原链接可点击文末左下角「阅读原文」 分享我最喜欢的一些 MacBook 屏保&#xff0c;让电脑看起来美美哒&#xff5e; Padbury Clock 地址&#xff1a;https://url.leanapp.cn/aKGW0Fv Word Clock 地址&…

JWT的优缺点

JWT优点&#xff1a; 1.无需依赖数据库、Redis等中间件&#xff0c;token自带加密用户、权限信息等&#xff0c;后端直接解析即可获取&#xff1b; 2.token自带有效期&#xff0c;后端无需存储维护&#xff0c;只需校验&#xff1b; JWT缺点&#xff1a; 1.创建后后端无法销毁…

前缀、中缀、后缀表达式及简易运算实现总结

title: 前缀、中缀、后缀表达式及简易运算实现总结 date: 2023-06-30 10:25:50 tags: 表达式 categories:开发知识及其他 cover: https://cover.png feature: false 1. 概念 1.1 什么是前缀、中缀、后缀表达式&#xff1f; 前缀表达式&#xff1a;又称波兰式&#xff08;Pol…

防止记录丢失,保存QQ聊天记录文件的方法

转载于&#xff1a;http://www.fanww.com/html/QQkongjiangequ/2010/0208/2543.html qq聊天记录默认安装盘符是&#xff1a;C:/Program Files/Tencent/QQ/Users/你的qq号码 - 如果你更改了qq安装默认目录&#xff0c;请点击桌面腾讯qq右键属性查看安装目录。 qq2009版的qq聊天记…

QQ导出的txt聊天记录导入数据库方法

QQ导出的txt聊天记录导入数据库方法 1.把QQ聊天记录从QQ中导出为txt格式的文件 2.用word打开所导出的txt文件&#xff0c;然后进行查找替换&#xff0c;用^p^p替换为|分割符&#xff0c;用昵称替换为^p昵称&#xff0c;如果有多个昵称请替换多次便可&#xff0c;并保存 3.打开s…