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/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()
地点短评出发时间天数人均费用人物玩法浏览次数
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
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()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值