绘图使用时间线对象绘图,而不是bar对象

timeline.render(“基础时间线柱状图.html”)


![](https://img-blog.csdnimg.cn/direct/43f3c832f6594e74b9706d1751994d49.png)


### 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”)


![](https://img-blog.csdnimg.cn/direct/2584c5aa5f024f65a91a5d3c92d5b0a1.png)


### 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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

…(img-2qkLMkK0-1713660971858)]

[外链图片转存中…(img-jYYuhWEo-1713660971858)]

[外链图片转存中…(img-vqcVyaa2-1713660971859)]

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐