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

Pyecharts之日历图(Calendar)

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

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

相关标签: pyecharts