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/0153000三五好友第一次 美食9055
1阿联酋阿联酋|小狮妹和父母的新年迪拜之旅/2019/12/108---3860
2AguadePau来自《一个女生的古巴独行记》(11日自由行攻略)/2019/09/271120000独自一人深度游 美食 摄影 国庆261
3建水云南│我什么也没忘,但有些事只适合收藏/2019/10/1084000三五好友穷游 摄影 古镇 赏秋 国庆6176
4日本日本|东京の72小时/2019/09/218---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/0153000三五好友第一次 美食9055
1阿联酋阿联酋|小狮妹和父母的新年迪拜之旅/2019/12/108---3860
2AguadePau来自《一个女生的古巴独行记》(11日自由行攻略)/2019/09/271120000独自一人深度游 美食 摄影 国庆261
3建水云南│我什么也没忘,但有些事只适合收藏/2019/10/1084000三五好友穷游 摄影 古镇 赏秋 国庆6176
4日本日本|东京の72小时/2019/09/218---12000
5海宁海洪宁静,盐潮入官,百里钱塘,春暖花开--驾“浙”观大潮访金庸、赏樱花睡房车/2020/03/232900情侣自驾 赏樱 踏春 清明22000
6敦煌甘青│到远方去,到那个山野苍茫的远方,熟悉的地方没有景色/2019/05/10103500三五好友环游 毕业游 穷游14000
data1=data.head(7)
data1
地点短评出发时间天数人均费用人物玩法浏览次数
0婺源春天的婺源,油菜花开,宛如一幅诗情画意的水墨画/2020/04/0153000三五好友第一次 美食9055
1阿联酋阿联酋|小狮妹和父母的新年迪拜之旅/2019/12/108---3860
2AguadePau来自《一个女生的古巴独行记》(11日自由行攻略)/2019/09/271120000独自一人深度游 美食 摄影 国庆261
3建水云南│我什么也没忘,但有些事只适合收藏/2019/10/1084000三五好友穷游 摄影 古镇 赏秋 国庆6176
4日本日本|东京の72小时/2019/09/218---12000
5海宁海洪宁静,盐潮入官,百里钱塘,春暖花开--驾“浙”观大潮访金庸、赏樱花睡房车/2020/03/232900情侣自驾 赏樱 踏春 清明22000
6敦煌甘青│到远方去,到那个山野苍茫的远方,熟悉的地方没有景色/2019/05/10103500三五好友环游 毕业游 穷游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()


  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值