• Pyecharts之日历图(Calendar)


    Pyecharts之日历图(Calendar)

    一.基本概念

    class pyecharts.charts.Calendar

    class Calendar(
        
        init_opts: opts.InitOpts=opts.InitOpts()
    )
    

    func pyecharts.charts.Calendar.add

    def add(
        # 系列名称,用于 tooltip 的显示,legend 的图例筛选。
        series_name: str,
    
        # 系列数据,格式为 [(date1, value1), (date2, value2), ...]
        yaxis_data: Sequence,
    
        # 是否选中图例
        is_selected: bool = True,
    
        # 标签配置项,参考 `series_options.LabelOpts`
        label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),
    
        # 日历坐标系组件配置项,参考 `CalendarOpts`
        calendar_opts: Union[opts.CalendarOpts, dict, None] = None,
    
        # 提示框组件配置项,参考 `series_options.TooltipOpts`
        tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
    
        # 图元样式配置项,参考 `series_options.ItemStyleOpts`
        itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,
    )
    

    class pyecharts.options.CalendarOpts

    二.代码图例

    1.Calendar_heatmap

    from snapshot_selenium import snapshot as driver
    
    from pyecharts import options as opts
    from pyecharts.charts import Bar
    from pyecharts.render import make_snapshot
    
    import random
    import datetime
    
    from pyecharts import options as opts
    from pyecharts.charts import Calendar
    
    begin=datetime.date(2019,1,1)
    end=datetime.date(2019,12,31)
    
    data=[
        [str(begin+datetime.timedelta(days=i)),random.randint(1000,2000)] for i in range((end-begin).days+1)
    ]
    
    c=(
        Calendar(init_opts=opts.InitOpts(width="1000px",height="600px"))
        .add(
            series_name="",
            yaxis_data=data,
            calendar_opts=opts.CalendarOpts(
                pos_top="120",
                pos_left="30",
                pos_right="30",
                range_="2019",
                yearlabel_opts=opts.CalendarYearLabelOpts(is_show=True)
            )
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(pos_top="30",pos_left="center",title="2019年步数情况"),
            visualmap_opts=opts.VisualMapOpts(
                max_=20000,min_=500,orient="horizontal",is_piecewise=False
            )
        )
    )
    
    make_snapshot(driver,c.render("Calendar_heatmap.html"),"Calendar_heatmap.png")
    
    
    

    2.Calendar_label_setting

    c = (
        Calendar()
        .add(
            "",
            data,
            calendar_opts=opts.CalendarOpts(
                range_="2019",
                daylabel_opts=opts.CalendarDayLabelOpts(name_map="cn"),
                monthlabel_opts=opts.CalendarMonthLabelOpts(name_map="cn"),
            ),
        )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Calendar-2019年微信步数情况(中文 Label)"),
            visualmap_opts=opts.VisualMapOpts(
                max_=20000,
                min_=500,
                orient="horizontal",
                is_piecewise=True,
                pos_top="230px",
                pos_left="100px",
            ),
        )
    )
    
    make_snapshot(driver,c.render("Calendar_label_setting.html"),"Calendar_label_setting.png")
    
    import datetime
    import random
    
    from pyecharts import options as opts
    from pyecharts.charts import Calendar
    
    
    begin = datetime.date(2019, 1, 1)
    end = datetime.date(2019, 12, 31)
    data = [
        [str(begin + datetime.timedelta(days=i)), random.randint(1000, 25000)]
        for i in range((end - begin).days + 1)
    ]
    
    c = (
        Calendar()
        .add("", data, calendar_opts=opts.CalendarOpts(range_="2019"))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Calendar-2019年微信步数情况"),
            visualmap_opts=opts.VisualMapOpts(
                max_=20000,
                min_=500,
                orient="horizontal",
                is_piecewise=True,
                pos_top="230px",
                pos_left="100px",
            ),
        )
        .render("calendar_base.html")
    )
    

    三.实例演示

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

    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()
    
    地点 短评 出发时间 天数 人均费用 人物 玩法 浏览次数
    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
    data['出发时间']=pd.to_datetime(data['出发时间'])
    
    datas=[z for z in zip(data["出发时间"].tolist(),data["浏览次数"].tolist())]
    
    begin = datetime.date(2019, 1, 1)
    end = datetime.date(2019, 12, 31)
    
    c = (
        Calendar()
        .add("", datas, calendar_opts=opts.CalendarOpts(range_="2019"))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="去那儿-2019年文章点击情况"),
            visualmap_opts=opts.VisualMapOpts(
                max_=20000,
                min_=500,
                orient="horizontal",
                is_piecewise=True,
                pos_top="230px",
                pos_left="100px",
            ),
        )
    )
    
    make_snapshot(driver,c.render("qunar_calendar.html"),"qunar_calendar.png")
    
    from pyecharts.globals import CurrentConfig,NotebookType
    
    CurrentConfig.NOTEBOOK_TYPE=NotebookType.JUPYTER_LAB
    
    c.load_javascript()
    
    <pyecharts.render.display.Javascript at 0x1ff6eba3e08>
    
    c.render_notebook()
    
    
    
  • 相关阅读:
    快速幂取模算法详解
    牛客网小白月赛5I区间(差分数组)
    多重背包模板
    hdu5791(DP)
    CodeForces
    最长上升子序列LIS(51nod1134)
    POJ1088(记忆搜索加dp)
    最长公共子序列LCS(POJ1458)
    Gym 100971J-Robots at Warehouse
    模板
  • 原文地址:https://www.cnblogs.com/LQ6H/p/12940535.html
Copyright © 2020-2023  润新知