Pyecharts - timeline, 画动态折线图

使用Pyecharts - timeline, 画动态折线图

参考以下视频链接
https://www.bilibili.com/video/BV17D4y1U7rz

单线-无图标

color0 = ['#FF76A2']
tl = Timeline()

# 循环读取数据
for i in range(0, len(data)):
    # X轴Y轴的最大刻度设置
    # X轴的长度, 此段数据X轴为days, x_max=list最大值+20days
    x_max = list(data['2023_DATE'])[i] + datetime.timedelta(days=35)
    # Y轴的长度, 
    y_max = int(max(list(data['2023_CUMSUM'])[0:i+1]))*1.2
    # ?
    # title_date = list(data['2023_DATE'])[i].strftime('%Y-%m-%d')
    
    # Line对象的实例化
    c = (
        Line(
            init_opts=opts.InitOpts(width='1600px', height='1000px', )
        )
        .add_xaxis(list(data['2023_DATE'])[0:i])
        .add_yaxis(
            series_name="2023_1-6累计产量", # legend, 可以放""值
            y_axis=list(data['2023_CUMSUM'])[0:i], is_smooth=True, is_symbol_show=False,
            # 设置line的颜色, 宽度
            linestyle_opts=opts.LineStyleOpts(color=color0[0], width=3),
        )
        .set_global_opts(
            # title_opts=opts.TitleOpts("上百近3年工厂产量折线图\n\n        {}".format(title_date), pos_left=350,padding=[30,20]),
            title_opts=opts.TitleOpts(title="上百近3年工厂产量折线图"), 
            # X轴设置
            xaxis_opts=opts.AxisOpts(type_="time", max_=x_max), # interval=10,min_=i-5,split_number=20,axistick_opts=opts.AxisTickOpts(length=2500),axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="grey"))
            # Y轴设置
            yaxis_opts=opts.AxisOpts(min_=9, max_=y_max), #坐标轴颜色,axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="grey"))
        )
    )
    # 将Line 加入到timeline中
    # tl.add(c, "{}".format(list(data['2023_DATE'])[i]))
    tl.add(c, list(data['2023_DATE'])[i]) # 这一句和上面这句貌似没区别
    # 加入下方时间轴
    tl.add_schema(axis_type='time', play_interval=100, pos_bottom="-20px",
                  is_loop_play=False, width="780px", pos_left='30px') #,pos_top=470,label_opts = opts.LabelOpts(is_show=False)
tl.render("单线-无图标.html")

三线

# 配置颜色
color0 = ['#FF76A2','#24ACE6', '#E7EA72']

tl = Timeline()

for i in range(0, len(data)):
    x_max = list(data['2023_DATE'])[i] + datetime.timedelta(days=35)
    y_max = int(max(list(data['2023_CUMSUM'])[0:i+1])*1.3)
    title_date = list(data['2023_DATE'])[i].strftime('%Y-%m-%d')
    c = (
        Line(
            init_opts=opts.InitOpts(
            #设置动画
            #animation_opts=opts.AnimationOpts(animation_delay_update=800),#(animation_delay=1000, animation_easing="elasticOut"),
            #设置宽度、高度
            width='2880px',
            height='2160px',)
        )
        .add_xaxis(list(data['2023_DATE'])[0:i])
        .add_yaxis(
            series_name="2023_1-6月产量",
            y_axis=list(data['2023_CUMSUM'])[0:i], 
            is_smooth=True, is_symbol_show=False,
            linestyle_opts=opts.LineStyleOpts(color=color0[0], width=8),
            # 设置 标记点markpoint
            markpoint_opts=opts.MarkPointOpts(
                data=[
                    opts.MarkPointItem(name="", 
                                       value=f"Y2023--{format(int(max(list(data['2023_CUMSUM'])[0:i+1])/10000), ',')} 万",
                                       coord=[x_max-datetime.timedelta(days=35), 
                                              int(max(list(data['2023_CUMSUM'])[0:i+1]))],
                                       # symbol=symbols['TV'], symbol_size=55, #symbol=symbols['circle'],symbol_size=20,
                                       itemstyle_opts=opts.ItemStyleOpts(color=color0[0])),#,border_color="red"
                ],
                label_opts=opts.LabelOpts(font_size=16,color=color0[0],font_weight="bold",position="right")
        ))
        .add_yaxis(
            series_name="2022_1-6月产量",
            y_axis=list(data['2022_CUMSUM'])[0:i], 
            is_smooth=True, is_symbol_show=False,
            linestyle_opts=opts.LineStyleOpts(color=color0[1], width=6),
            # 设置 标记点markpoint
            markpoint_opts=opts.MarkPointOpts(
                data=[
                    opts.MarkPointItem(name="", 
                                       value=f"Y2022--{format(int(max(list(data['2022_CUMSUM'])[0:i+1])/10000), ',')} 万",
                                       coord=[x_max-datetime.timedelta(days=35), 
                                              int(max(list(data['2022_CUMSUM'])[0:i+1]))],
                                       # symbol=symbols['TV'], symbol_size=55, #symbol=symbols['circle'],symbol_size=20,
                                       itemstyle_opts=opts.ItemStyleOpts(color=color0[1])),#,border_color="red"
                ],
                label_opts=opts.LabelOpts(font_size=16,color=color0[1],font_weight="bold",position="right"))
        )
        .add_yaxis(
            series_name="2021_1-6月产量",
            y_axis=list(data['2021_CUMSUM'])[0:i], 
            is_smooth=True, is_symbol_show=False,
            linestyle_opts=opts.LineStyleOpts(color=color0[2], width=6),
            # 设置 标记点markpoint
            markpoint_opts=opts.MarkPointOpts(
                data=[
                    opts.MarkPointItem(name="", 
                                       value=f"Y2021--{format(int(max(list(data['2021_CUMSUM'])[0:i+1])/10000), ',')} 万",
                                       coord=[x_max-datetime.timedelta(days=35), 
                                              int(max(list(data['2021_CUMSUM'])[0:i+1]))],
                                       # symbol=symbols['TV'], symbol_size=55, #symbol=symbols['circle'],symbol_size=20,
                                       itemstyle_opts=opts.ItemStyleOpts(color=color0[2])),#,border_color="red"
                ],
                label_opts=opts.LabelOpts(font_size=16,color=color0[2],font_weight="bold",position="right"))
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="上百近3年1月-6月\n工厂产量"), 
            xaxis_opts=opts.AxisOpts(type_="time",max_=x_max),#, interval=10,min_=i-5,split_number=20,axistick_opts=opts.AxisTickOpts(length=2500),axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="grey"))
            yaxis_opts=opts.AxisOpts(min_=9,max_=y_max),#坐标轴颜色,axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="grey"))
        )
    )
    tl.add(c, "{}".format(list(data['2023_DATE'])[i]))
    tl.add_schema(axis_type='time',play_interval=180, pos_bottom="-20px",
                  is_loop_play=False, width="780px", pos_left='30px')#,pos_top=470,label_opts = opts.LabelOpts(is_show=False)
tl.render("双线-无图标.html")
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值