欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Pyecharts之漏斗图(Funnel)

程序员文章站 2022-03-03 14:34:48
...

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()


相关标签: pyecharts