Python学习从0到1 day18 Python可视化基础综合案例 3
外链图片转存中…(img-jYYuhWEo-1713660971858)][外链图片转存中…(img-vqcVyaa2-1713660971859)]
绘图使用时间线对象绘图,而不是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 ThemeType
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(
{“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]] # 定义排序方式,基于带名函数,数字排序,下标1 def choose_sort_key(element): return element[1] # reverse默认反转,True是反转,将元素传入函数中,来确定按照什么排序 my_list.sort(key=choose_sort_key,reverse=True) print(my_list)
排序,基于lamba匿名函数
# 准备列表 my_list = [["a",33],["b",55],["c",11]] # 排序,基于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], [国家,gdp], ...... ], 年份: [ [国家, gdp], [国家,gdp], ...... ], ...... } # { 1960: [ [美国, 123], [中国,321], ...... ], 1961: [ [美国, 123], [中国,321], ...... ], ...... } # 先定义一个字典对象 data_dict = {} # 循环遍历拿到文件中的每一个数据 for line in data_lines: # 字符串的分割,split("字符")方法 year = int(line.split(",")[0]) # 年份 country = line.split(",")[1] # 国家 # 用float强转将科学记数法转变为小数 gdp = float(line.split(",")[2]) # gdp数据 # 如何判断字典里面有没有指定的key呢? 异常的处理方法 try: # 如果没有异常,表面数据中有这个年份数据了,调用append方法追加一份数据 data_dict[year].append([country, gdp]) except KeyError: # 如果出现了异常,表明数据中没有这个year,构建一个空的列表在里面,追加新的内嵌列表,添加数据 data_dict[year] = [] data_dict[year].append([country, gdp]) # print(data_dict[1960]) # 打印文档数据
5.创建时间线对象
# 创建时间线对象 timeline = Timeline({"theme": ThemeType.LIGHT}) # 排序年份 取出全部的key并给它们排序 sorted_year_list = sorted(data_dict.keys()) # for循环每一年的数据,基于每一年的数据,创建每一年的bar对象 # 在for中,将每一年的bar对象添加到时间线中 for year in sorted_year_list: # 使用了lambda匿名函数 key = lambda element:element[1],反转后GDP高的在第一位 data_dict[year].sort(key=lambda element: element[1], reverse=True) # 只需要前八名的年份数据,取出本年份GDP前8名的国家 year_data = data_dict[year][0:8] # 序列的切片 # 只需要简单定义出两个空列表 x_data = [] y_data = [] # 取出年份数据 for country_gdp in year_data: # append方法给列表添加对象 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数据") ) # bar对象是图表,str(year)点(对象)的名字就是当前年份 timeline.add(bar, str(year))
6.设置自动播放
# 设置时间线自动播放 timeline.add_schema( play_interval=1000, # 播放时间间隔 is_timeline_show=True, # 换点进行显示出来 is_auto_play=True, # 是否自动播放 is_loop_play=False # 是否循环播放 )
7.绘图
# 绘图 timeline.render("1960-2019全球GDP前8国家.html")
8.整体代码
""" 演示第三个图表:GDP动态柱状图开发 Bar,构建柱状图 optiond,对标题进行设计 TimeLine,时间线对象 ThemeTypr,导入主题颜色的包 """ from pyecharts.charts import Bar, Timeline from pyecharts.options import * from pyecharts.globals import ThemeType # 读取数据 f = open("E:\python.learning\动态柱状图数据/1960-2019全球GDP数据.txt", "r", encoding="utf-8") 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: # 字符串的分割,split("字符")方法 year = int(line.split(",")[0]) # 年份 country = line.split(",")[1] # 国家 # 用float强转将科学记数法转变为小数 gdp = float(line.split(",")[2]) # gdp数据 # 如何判断字典里面有没有指定的key呢? 异常的处理方法 try: # 如果没有异常,表面数据中有这个年份数据了,调用append方法追加一份数据 data_dict[year].append([country, gdp]) except KeyError: # 如果出现了异常,表明数据中没有这个year,构建一个空的列表在里面,追加新的内嵌列表,添加数据 data_dict[year] = [] data_dict[year].append([country, gdp]) # print(data_dict[1960]) # 打印文档数据 # 创建时间线对象 timeline = Timeline({"theme": ThemeType.LIGHT}) # 排序年份 取出全部的key并给它们排序 sorted_year_list = sorted(data_dict.keys()) # for循环每一年的数据,基于每一年的数据,创建每一年的bar对象 # 在for中,将每一年的bar对象添加到时间线中 for year in sorted_year_list: # 使用了lambda匿名函数 key = lambda element:element[1],反转后GDP高的在第一位 data_dict[year].sort(key=lambda element: element[1], reverse=True) # 只需要前八名的年份数据,取出本年份GDP前8名的国家 year_data = data_dict[year][0:8] # 序列的切片 # 只需要简单定义出两个空列表 x_data = [] y_data = [] # 取出年份数据
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)
…(img-2qkLMkK0-1713660971858)]
[外链图片转存中…(img-jYYuhWEo-1713660971858)]
[外链图片转存中…(img-vqcVyaa2-1713660971859)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)
更多推荐
所有评论(0)