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

原文地址:https://www.cnblogs.com/LQ6H/p/12940535.html