python基础综合案例(数据可视化-动态柱状图)

1.基础柱状图的构建

打开浏览器,你会发现这是一个动态图,会随着时间变化而变化

具体效果大家可以看我主页有个动态柱状图视频

本质上来说,是和我们构建一个折线统计图差不多的,只是把对象换了一下

如果我们需要反转x和y轴,可以输入以下代码

# 反转x轴和y轴
bar.reversal_axis()

鼠标滑动即可看到具体数据

就这样数值标签变到了右边

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

总结:

·通过Bar()构建一个柱状图对象

·和折线图一样,通过add_xaxis()和add_yaxis()添加x和y轴数据

·通过柱状图对象的:reversal_axis(),反转x和y轴

·通过label_opts=LabelOpts(position="right")设置数值标签在右侧显示

2.基础时间线柱状图

这个就是一个时间线

其实就是给点1一个柱状图,点2一个柱状图,随着点1到点2,柱状图也改变

时间线就是在x轴上提供很多个点,每一个点都是一个图表

这样我们就得到了一个基础的时间线

自动播放

自动播放无法放视频就不演示了,大家自行探索

别人的是红色的,而我的是蓝色的,那么怎么改颜色呢

如何设置主题

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,20,20],label_opts=LabelOpts(position="right"))
bar1.reversal_axis()bar2 = Bar()
bar2.add_xaxis(["中国","美国","英国"])
bar2.add_yaxis("GDP",[50,50,10],label_opts=LabelOpts(position="right"))
bar2.reversal_axis()bar3 = Bar()
bar3.add_xaxis(["中国","美国","英国"])
bar3.add_yaxis("GDP",[70,60,55],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")
# 绘图是用时间线对象绘图,而不是bar对象了
timeline.render("基础时间线柱状图.html")
# 自动播放设置
timeline.add_schema(play_interval=1000,     # 自动播放的时间间隔,单位毫秒is_timeline_show=True,  # 是否在自动播放的时候,显示时间线is_auto_play=True,      # 是否自动播放is_loop_play=True       # 是否循环自动播放
)

3.GDP动态柱状图绘制

列表的sort方法

就是将元素传入函数中,然后看他返回什么,将返回值作为排序的依据,比如这个返回了每一个元素的下标1(下标0就是第一个字母),就是告诉我们按照每一个元素的下标1来排序

数据处理

这是一个数据例子,我们通过记事本将其打开

发现是一个由逗号分隔的数据

注意看它的格式不是UTF-8而是ANSI,ANSI就是根据我们操作系统默认的语言版本来的,默认的中文编码是GB2312

这个gdp它里面有的数据太大,所以使用科学计数法,我们要把科学计数法给他强制转换成float,也就是浮点数

gdp = float(line.split(",")[2])

就像这样

当你定义一个空字典,取字典运行会报错

如果字典里面有这个key,就不会报错

写一点检查运行一下

绘图

因为数据过多,我们可以通过for循环去循环我们的字典,然后每一年在循环里面都构建出来一个bar,一个柱状图的对象是不是就ok了

字典是无序的,我们需要去排序它

由于这一段不需要我们制定一个判断标准,所以使用sorted也可以

观察这个我们想办法把它设置成最高的在上面

x_data.reverse()
y_data.reverse()

只需要这样就可以把x轴数据反转,y轴数据反转

那么直接看代码!

# 演示第三个图表,GDP动态柱状图开发
from pyecharts.charts import Bar,Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType
# 读取数据
f = open("D:/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])
# 创建时间线对象
timeline = Timeline({"theme":ThemeType.LIGHT})
# 排序年份 # 字典是无序的,需要我们处理排序
sorted_year_list = sorted(data_dict.keys())
# for循环每一年的数据。基于每一年的数据,创建每一年的bar对象
# 在for中,将每一年的bar对象添加到时间线中
for year in sorted_year_list:data_dict[year].sort(key=lambda element: element[1],reverse=True)# 取出本年份前八名的国家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}年全球前八GDP数据"))timeline.add(bar,str(year))# 设置时间线自动播放
timeline.add_schema(play_interval=1000,is_timeline_show=True,is_auto_play=True,is_loop_play=False
)
# 绘图
timeline.render("1960-2019全国GDP前八国家.html")

具体的结果已经上传至主页,大家感兴趣可以去看看。

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

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

相关文章

从SQL到NoSQL:数据库类型及应用场景

在当今数据驱动的时代,数据库技术已经成为了支撑各类应用的核心。在讨论数据库类型时,SQL数据库与NoSQL数据库无疑是最常被提及的两种主流选择。 一、SQL数据库(关系型数据库) SQL数据库,通常也被称为关系型数据库&am…

YOLOv8实战野生动物识别

本文采用YOLOv8作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv8以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对野生动物数据集进行训练和优化,该数据集包含丰富的野生动物图像样本…

Python 基础语法 - 变量

1. 变量存在的意义 变量在程序中是用来保存数据 优点: 提高可读性 变量使代码更易于理解。通过使用有意义的变量名,其他开发者(或自己在未来)能够更快地理解代码的意图。简化维护 如果需要更改某个值,只需修改变量的…

【动手学强化学习】part6-策略梯度算法

阐述、总结【动手学强化学习】章节内容的学习情况,复现并理解代码。 文章目录 一、算法背景1.1 算法目标1.2 存在问题1.3 解决方法 二、REINFORCE算法2.1 必要说明softmax()函数交叉熵策略更新思想 2.2 伪代码算法流程简述 2.3 算法代码2.4 运行结果2.5 算法流程说明…

LSTM(Long Short-Term Memory,长短期记忆网络)在高端局效果如何

lstm 杂乱数据分析 LSTM(Long Short-Term Memory,长短期记忆网络)在高端局,即复杂的机器学习和深度学习应用中,展现出了其独特的优势和广泛的应用价值。以下是对LSTM在高端局中的详细解析: 一、LSTM的优势…

监控易系统:引领智能阈值管理与网络设备监控的创新

随着信息技术的不断革新,企业对于设备监控管理的需求也日益增长。为了应对这一挑战,监控易系统应运而生,以其卓越的性能和便捷的操作,为企业设备监控管理开辟了一条全新的道路。本文将深入探讨监控易系统在智能阈值管理与设备监控…

代码随想录:404. 左叶子之和

404. 左叶子之和 使用层序遍历,找到左叶子结点加入答案即可 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* T…

大语言模型驱动的跨域属性级情感分析——论文阅读笔记

前言 论文PDF下载地址:7156 最近想搜一下基于大语言模型的情感分析论文,搜到了这篇在今年发表的论文,于是简单阅读之后在这里记一下笔记。 如图1所示,在餐厅领域中的"快"是上菜快,属于正面情感,但…

jfif图片怎么改成jpg?几种非常简单的jfif转jpg方法

jfif图片怎么改成jpg?随着图像技术的日新月异,用户在图像的编辑、处理与分享过程中,常常需要根据实际需求,灵活转换图像格式,以适应多样化的应用场景。正是这一需求,催生了将jfif格式向jpg格式转换的广泛实…

一些剪视频需要下载视频、chatTTS文字转语音的相关代码

可以在YouTube下载视频,下载字幕,以及需要文字转音频的一些代码,自己写的,目前也是能实现一点小需求~ 是需要下载FFmpeg、yt-dlp.exe、chrome_cookies插件,需要下载的自行search,不再赘述 人机验证 需要…

力扣每日一题 685. 冗余连接 II

在本问题中,有根树指满足以下条件的 有向 图。该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。 输入一个有向图,该图由一个有着 n 个节点&#x…

电能表预付费系统-标准传输规范(STS)(22)

6.5.2.3 DecoderKey classification 6.5.2.3.1 Classification of decoder keys STS DecoderKeys are classified according to the KT values given in Table 32 and inherit their type from that of the VendingKey, from which they are derived. STS decoderkey根据表32…

msvcr100.dll丢失怎么办,总结六种解决msvcr100.dll丢失的方法

​msvcr100.dll是Microsoft Visual C 2010 Redistributable Package中的一个关键动态链接库文件。它包含了运行由Visual C 2010编译的应用程序所需的一系列函数和类。简单来说,许多使用 Visual C 2010 编译的应用程序在启动或运行过程中会依赖 msvcr100.dll 文件。如…

Java基础 —— IO流详解

IO流 在Java中,IO(输入/输出)流是用于在程序与外部世界(如文件、网络、内存等)之间传输数据的机制。IO流分为两大类:输入流(InputStream/Reader)和输出流(OutputStream/…

Java封装练习——属性私有化

创建一个程序,在其中定义两个类,并使用Java的封装技术完成; 1、属性有:姓名(长度要大于等于2小于等于4)、余额(要大于20,否则提示默认余额为0)、密码(密码长…

程序设计挑战赛A卷

某药店为了回馈顾客,拿出7个品牌的口罩做特价限购活动:A品牌是3个装2元,B品牌是3个装3元,C品牌是4个装2元,D品牌是5个装3元,E品牌是4个装5元,F品牌是1个装2元,G品牌是2个装2元&#…

软硬件开发面试问题大汇总篇——针对非常规八股问题的提问与应答(代码规范与生态管理)

软硬件开发,对于编码规范、生态管理等等综合问题的考察尤为重要。 阐述下环形缓冲区的用途 环形缓冲区(Ring Buffer)是一种固定大小的数据结构,常用于实现数据的流式传输或临时存储。在环形缓冲区中,当到达缓冲区的末尾…

计算机网络:数据链路层 —— 虚拟局域网 VLAN

文章目录 局域网虚拟局域网 VLAN虚拟局域网 VLAN 概述实现机制IEEE 802.1Q帧以太网交换机的接口类型Access 接口Trunk 接口Hybrid 接口不进行人为的VLAN划分划分两个不同VLANTrunk接口去标签后进行转发Trunk接口直接转发 局域网 局域网(Local Area Network&#xf…

【Vulnhub靶场】DC-6

DC-6靶场下载地址:https://download.vulnhub.com/dc/DC-6.zip​​​​​​ 目标 本机IP:192.168.118.128 靶机IP:192.168.118.0/24 信息收集 主机发现 arp-scan 192.168.118.0/24 根据上图得出目标主机为192.168.118.143 扫描端口&#x…

图片藏字方案介绍

在Ubuntu安装库 sudo apt-get install libopencv-dev生成字符图片,可以通过PS生成,身为程序员,尝试通过python生成,更加灵活方便 from PIL import Image, ImageDraw, ImageFontdef create_text_image(text, font_path, font_siz…