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