Timeline: 时间线轮播多图

对全国2014-2023年各省市的人口,做出动态柱状图/时间线轮播多图,即每隔一定时间间隔,自动的切换2014、2015、....2023各省市的人口(即2014-2023年全国省市人口排名前12的情况)

1、模板

# -*- coding: gbk -*-
from pyecharts import options as opts
from pyecharts.charts import Bar, Timeline
from pyecharts.faker import Faker

x = Faker.choose()  # ['可乐','雪碧','橙汁','绿茶','奶茶','百威','青岛']
tl = Timeline()  # 创建Timeline对象
for i in range(2015, 2020):  # 循环5次,创建了5个Bar柱状图
    bar = (
        Bar()
        .add_xaxis(x)  # 添加X轴数据['可乐','雪碧','橙汁','绿茶','奶茶','百威','青岛']
        .add_yaxis("商家A", Faker.values()) # 添加Y轴数据 [值1,值2...]
        .add_yaxis("商家B", Faker.values()) # 添加Y轴数据 [值1,值2...]
        .set_global_opts(title_opts=opts.TitleOpts("某商店{}年营业额".format(i)))
    )
    tl.add(bar, "{}年".format(i))
tl.render("timeline_bar.html")

 2、具体实现

# -*- coding: gbk -*-
from pyecharts import options as opts
from pyecharts.charts import Bar, Timeline
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType

"""准备数据"""
# 确定需要创建多少个Bar对象,根据文件提供的年份 2014-2023
with open("分省年度数据 .csv","r",encoding="gbk") as f:
    data_lines=f.readlines()

# 删除 data_lines列表的前3个元素(行)
for _ in range(3):
    data_lines.pop(0)

# 删除 data_lines列表的后2个元素(行)
for _ in range(2):
    data_lines.pop(-1)

years=data_lines.pop(0).replace("\n","").split(",")
# 去掉第一个元素“地区”
years.pop(0)

# 遍历data_lines,生成我们需要的数据
# 把数据放到一个字典对象中 data_dict={年份:[[省市名,人口数],[省市名,人口数]...],
# 年份:[[省市名,人口数],[省市名,人口数]...]}
# 具体案例 {2003:[["北京市",1456],["天津市",1011]...],
# 2004:[["北京市",1493],["天津市",1024]...],...}

# 创建字典对象
data_dict={}

for data_line in data_lines:
    data_line_list=data_line.replace("\n","").split(",")
    # 遍历years给各个城市的各个省份的人口数据添加到data_dict
    index=0
    for year in years:
        index+=1
        try:
            data_dict[year].append([data_line_list[0],float(data_line_list[index])])
        except Exception as e:
            # 如果出现了异常,说明是第一次添加数据
            data_dict[year]=[]
            data_dict[year].append([data_line_list[0],float(data_line_list[index])])

"""创建Timeline对象"""
timeline=Timeline({"theme":ThemeType.ESSOS})
years.reverse()

"""创建Bar对象,并加入到Timeline对象,还要进行配置"""
for year in years:
    # 下面我们需要取出每一年按照人口数量排序的前12个省市
    # 1、先排序 2、切片
    data_dict[year].sort(key=lambda ele:ele[1],reverse=True)
    rank_12_city_data=data_dict[year][0:12]
    # 定义Bar的X轴数据
    x_data=[]
    # 定义Bar的Y轴数据
    y_data=[]
    for city in rank_12_city_data:
        x_data.append(city[0])
        y_data.append(city[1])
    # 创建Bar对象
    bar=Bar()
    # 对x_data数据和y_data数据翻转
    x_data.reverse()
    y_data.reverse()
    bar.add_xaxis(x_data)
    bar.add_yaxis("人口(万)",y_data)
    # 转换X轴和Y轴
    bar.reversal_axis()
    # 全局配置
    bar.set_global_opts(title_opts=opts.TitleOpts(title=
                        f"{year}年全国省市人口排名前12的情况"))
    # 将创建好的bar添加到Timeline对象
    timeline.add(bar,str(year))

# 对时间线进行配置
timeline.add_schema(
    play_interval=500,
    is_auto_play=True
)

"""生成对应的文件"""
timeline.render("2014-2023年全国省市人口排名前12的情况.html")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值