• Pyecharts之漏斗图(Funnel)


    Pyecharts之漏斗图(Funnel)

    一.基本概念

    class pyecharts.charts.Funnel

    class Funnel(
        # 初始化配置项,参考 `global_options.InitOpts`
        init_opts: opts.InitOpts = opts.InitOpts()
    )
    

    func pyecharts.charts.Funnel.add

    def add(
        # 系列名称,用于 tooltip 的显示,legend 的图例筛选。
        series_name: str,
    
        # 系列数据项,格式为 [(key1, value1), (key2, value2)]
        data_pair: Sequence,
    
        # 是否选中图例
        is_selected: bool = True,
    
        # 系列 label 颜色
        color: Optional[str] = None,
    
        # 数据排序, 可以取 'ascending','descending','none'(表示按 data 顺序)
        sort_: str = "descending",
    
        # 数据图形间距
        gap: Numeric = 0,
    
        # 标签配置项,参考 `series_options.LabelOpts`
        label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),
    
        # 提示框组件配置项,参考 `series_options.TooltipOpts`
        tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
    
        # 图元样式配置项,参考 `series_options.ItemStyleOpts`
        itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,
    )
    

    二.代码示例

    1.Funnel_sort_ascending

    from snapshot_selenium import snapshot as driver
    
    from pyecharts import options as opts
    from pyecharts.charts import Bar
    from pyecharts.render import make_snapshot
    
    from pyecharts import options as opts
    from pyecharts.charts import Funnel
    from pyecharts.faker import Faker
    
    c = (
        Funnel()
        .add(
            "商品",
            [list(z) for z in zip(Faker.choose(), Faker.values())],
            sort_="ascending",
            label_opts=opts.LabelOpts(position="inside"),
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="Funnel-Sort(ascending)"),toolbox_opts=opts.ToolboxOpts())
    )
    
    make_snapshot(driver,c.render("funnel_sort_ascending.html"),"funnel_sort_ascending.png")
    

    2.Funnel_base

    from pyecharts import options as opts
    from pyecharts.charts import Funnel
    from pyecharts.faker import Faker
    
    c = (
        Funnel()
        .add("商品", [list(z) for z in zip(Faker.choose(), Faker.values())])
        .set_global_opts(title_opts=opts.TitleOpts(title="Funnel-基本示例"))
        #.render("funnel_base.html")
    )
    
    make_snapshot(driver,c.render("funnel_base.html"),"funnel_base.png")
    

    3.Funnel_chart

    import pyecharts.options as opts
    from pyecharts.charts import Funnel
    
    
    x_data = ["展现", "点击", "访问", "咨询", "订单"]
    y_data = [100, 80, 60, 40, 20]
    
    data = [[x_data[i], y_data[i]] for i in range(len(x_data))]
    
    (
        Funnel(init_opts=opts.InitOpts(width="1600px", height="800px"))
        .add(
            series_name="",
            data_pair=data,
            gap=2,
            tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b} : {c}%"),
            label_opts=opts.LabelOpts(is_show=True, position="inside"),
            itemstyle_opts=opts.ItemStyleOpts(border_color="#fff", border_width=1),
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="漏斗图", subtitle="纯属虚构"))
        #.render("funnel_chart.html")
    )
    
    make_snapshot(driver,c.render("funnel_chart.html"),"funnel_chart.png")
    

    4.Funnel_label_inside

    from pyecharts import options as opts
    from pyecharts.charts import Funnel
    from pyecharts.faker import Faker
    
    
    c = (
        Funnel()
        .add(
            "商品",
            [list(z) for z in zip(Faker.choose(), Faker.values())],
            label_opts=opts.LabelOpts(position="inside"),
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="Funnel-Label(inside)"))
        #.render("funnel_label_inside.html")
    )
    
    make_snapshot(driver,c.render("funnel_label_inside.html"),"funnel_label_inside.png")
    

    三.实例演示

    数据具体处理过程链接:去哪儿

    1.数据处理及获取

    import pandas as pd
    
    data=pd.read_csv("travel2.csv")
    data.head()
    
    地点 短评 出发时间 天数 人均费用 人物 玩法 浏览量
    0 婺源 春天的婺源,油菜花开,宛如一幅诗情画意的水墨画 /2020/04/01 5 3000 三五好友 第一次 美食 9055
    1 阿联酋 阿联酋|小狮妹和父母的新年迪拜之旅 /2019/12/10 8 - - - 3860
    2 AguadePau 来自《一个女生的古巴独行记》(11日自由行攻略) /2019/09/27 11 20000 独自一人 深度游 美食 摄影 国庆 261
    3 建水 云南│我什么也没忘,但有些事只适合收藏 /2019/10/10 8 4000 三五好友 穷游 摄影 古镇 赏秋 国庆 6176
    4 日本 日本|东京の72小时 /2019/09/21 8 - - - 1.2万
    import re
    
    def Look(e):
        
        if '万' in e:
            num=re.findall('(.*?)万',e)
            return float(num[0])*10000
        else:
            return float(e)
        
    data['浏览次数']=data['浏览量'].apply(Look)
    data.drop(['浏览量'],axis=1,inplace=True)
    data['浏览次数']=data['浏览次数'].astype(int)
    
    data.head(7)
    
    地点 短评 出发时间 天数 人均费用 人物 玩法 浏览次数
    0 婺源 春天的婺源,油菜花开,宛如一幅诗情画意的水墨画 /2020/04/01 5 3000 三五好友 第一次 美食 9055
    1 阿联酋 阿联酋|小狮妹和父母的新年迪拜之旅 /2019/12/10 8 - - - 3860
    2 AguadePau 来自《一个女生的古巴独行记》(11日自由行攻略) /2019/09/27 11 20000 独自一人 深度游 美食 摄影 国庆 261
    3 建水 云南│我什么也没忘,但有些事只适合收藏 /2019/10/10 8 4000 三五好友 穷游 摄影 古镇 赏秋 国庆 6176
    4 日本 日本|东京の72小时 /2019/09/21 8 - - - 12000
    5 海宁 海洪宁静,盐潮入官,百里钱塘,春暖花开--驾“浙”观大潮访金庸、赏樱花睡房车 /2020/03/23 2 900 情侣 自驾 赏樱 踏春 清明 22000
    6 敦煌 甘青│到远方去,到那个山野苍茫的远方,熟悉的地方没有景色 /2019/05/10 10 3500 三五好友 环游 毕业游 穷游 14000
    data1=data.head(7)
    data1
    
    地点 短评 出发时间 天数 人均费用 人物 玩法 浏览次数
    0 婺源 春天的婺源,油菜花开,宛如一幅诗情画意的水墨画 /2020/04/01 5 3000 三五好友 第一次 美食 9055
    1 阿联酋 阿联酋|小狮妹和父母的新年迪拜之旅 /2019/12/10 8 - - - 3860
    2 AguadePau 来自《一个女生的古巴独行记》(11日自由行攻略) /2019/09/27 11 20000 独自一人 深度游 美食 摄影 国庆 261
    3 建水 云南│我什么也没忘,但有些事只适合收藏 /2019/10/10 8 4000 三五好友 穷游 摄影 古镇 赏秋 国庆 6176
    4 日本 日本|东京の72小时 /2019/09/21 8 - - - 12000
    5 海宁 海洪宁静,盐潮入官,百里钱塘,春暖花开--驾“浙”观大潮访金庸、赏樱花睡房车 /2020/03/23 2 900 情侣 自驾 赏樱 踏春 清明 22000
    6 敦煌 甘青│到远方去,到那个山野苍茫的远方,熟悉的地方没有景色 /2019/05/10 10 3500 三五好友 环游 毕业游 穷游 14000
    datas=[z for z in zip(data1["地点"].tolist(),data1["浏览次数"].tolist())]
    datas
    
    [('婺源', 9055),
     ('阿联酋', 3860),
     ('AguadePau', 261),
     ('建水', 6176),
     ('日本', 12000),
     ('海宁', 22000),
     ('敦煌', 14000)]
    
    a=[1,2,3]
    a.
    
    [2, 3]
    

    2.展示

    datas
    
    [('婺源', 9055),
     ('阿联酋', 3860),
     ('AguadePau', 261),
     ('建水', 6176),
     ('日本', 12000),
     ('海宁', 22000),
     ('敦煌', 14000)]
    
    from pyecharts import options as opts
    from pyecharts.charts import Funnel
    
    f=(
        Funnel(init_opts=opts.InitOpts(width="1000px",height="600px"))
        .add(
            series_name="地点",
            data_pair=datas,
            gap=2,
            tooltip_opts=opts.TooltipOpts(trigger="item",formatter="{a} <br/>{b}:{c}"),
            label_opts=opts.LabelOpts(is_show=True,position="inside"),
            itemstyle_opts=opts.ItemStyleOpts(border_color="#fff",border_width=1)
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="地点",subtitle="浏览数"))
    )
    
    make_snapshot(driver,f.render("qunar_funnel.html"),"qunar.png")
    
    from pyecharts.globals import CurrentConfig,NotebookType
    
    CurrentConfig.NOTEBOOK_TYPE=NotebookType.JUPYTER_LAB
    
    
    
    f.load_javascript()
    
    <pyecharts.render.display.Javascript at 0x1073d21f188>
    
    f.render_notebook()
    
    
    
    
    
  • 相关阅读:
    bzoj 4451 : [Cerc2015]Frightful Formula FFT
    bzoj 3928: [Cerc2014] Outer space invaders
    HDU 5306 线段树
    bzoj 1914: [Usaco2010 OPen]Triangle Counting 数三角形
    bzoj 4519: [Cqoi2016]不同的最小割 最小割树
    bzoj : 4504: K个串 区间修改主席树
    bzoj 4332:JSOI2012 分零食
    bzoj 2595 : [Wc2008]游览计划
    poj 3683 Priest John's Busiest Day
    bzoj 1823: [JSOI2010]满汉全席 && bzoj 2199 : [Usaco2011 Jan]奶牛议会 2-sat
  • 原文地址:https://www.cnblogs.com/LQ6H/p/12940534.html
Copyright © 2020-2023  润新知