Python3 的 Pyecharts 制作 Calendar(月曆熱圖) 時需要使用的設定參數和常用模闆案例,可根據實際情況對案例中的内容進行調整即可。
Demo
月曆熱圖
import random
import datetime
import pyecharts.options as opts
from pyecharts.charts import Calendar
# 制作基礎資料
begin = datetime.date(2021, 1, 1)
end = datetime.date(2021, 12, 31)
data = [
[str(begin + datetime.timedelta(days=i)), random.randint(1000, 25000)]
for i in range((end - begin).days + 1)
]
c = (
Calendar(init_opts=opts.InitOpts())
.add(
series_name="",
yaxis_data=data,
calendar_opts=opts.CalendarOpts(
pos_top="120", # 設定月曆圖的在容器中距上邊界位置
pos_left="30", # 設定月曆圖的在容器中距左邊界位置
pos_right="30", # 設定月曆圖的在容器中距右邊界位置
range_="2021", # 比對資料的年份資訊
daylabel_opts=opts.CalendarDayLabelOpts(name_map="cn"), # 設定日标簽為中文
monthlabel_opts=opts.CalendarMonthLabelOpts(name_map="cn"), # 設定月标簽為中文
yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False), # 設定是否顯示年份标簽
),
)
.set_global_opts(
title_opts=opts.TitleOpts(
pos_top="10",
pos_left="center",
title="2021年資料計數熱圖"
),
visualmap_opts=opts.VisualMapOpts(
max_=25000, min_=500, # 設定顯示區間
orient="horizontal", # 設定顯示方式,水準
# is_piecewise=False, # 設定拖動區間
is_piecewise=True, # 設定顯示區間
),
)
# .render("月曆熱圖.html")
)
c.render_notebook()
月曆熱圖帶工具箱
import random
import datetime
import pyecharts.options as opts
from pyecharts.charts import Calendar
begin = datetime.date(2017, 1, 1)
end = datetime.date(2017, 12, 31)
data = [
[str(begin + datetime.timedelta(days=i)), random.randint(1000, 25000)]
for i in range((end - begin).days + 1)
]
c = (
Calendar(init_opts=opts.InitOpts(width="800px", height="400px"))
.add(
series_name="",
yaxis_data=data,
calendar_opts=opts.CalendarOpts(
pos_top="120",
pos_left="30",
pos_right="30",
range_="2017",
yearlabel_opts=opts.CalendarYearLabelOpts(is_show=False),
),
)
.set_global_opts(
title_opts=opts.TitleOpts(pos_top="30", pos_left="center", title="2021年情況"),
visualmap_opts=opts.VisualMapOpts(
max_=20000, min_=500, orient="horizontal", is_piecewise=False
),
)
# .render("月曆熱圖帶工具.html")
)
c.render_notebook()
在這裡插入圖檔描述
Calendar:月曆圖
基本設定
class Calendar(
# 初始化配置項,參考 `global_options.InitOpts`
init_opts: opts.InitOpts = opts.InitOpts()
)
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 CalendarOpts(
# calendar元件離容器左側的距離。
# left 的值可以是像 20 這樣的具體像素值,可以是像 '20%' 這樣相對于容器高寬的百分比,
# 也可以是 'left', 'center', 'right'。
# 如果 left 的值為'left', 'center', 'right',元件會根據相應的位置自動對齊。
pos_left: Optional[str] = None,
# calendar元件離容器上側的距離。
# top 的值可以是像 20 這樣的具體像素值,可以是像 '20%' 這樣相對于容器高寬的百分比,
# 也可以是 'top', 'middle', 'bottom'。
# 如果 top 的值為'top', 'middle', 'bottom',元件會根據相應的位置自動對齊。
pos_top: Optional[str] = None,
# calendar元件離容器右側的距離。
# right 的值可以是像 20 這樣的具體像素值,可以是像 '20%' 這樣相對于容器高寬的百分比。
# 預設自适應。
pos_right: Optional[str] = None,
# calendar元件離容器下側的距離。
# bottom 的值可以是像 20 這樣的具體像素值,可以是像 '20%' 這樣相對于容器高寬的百分比。
# 預設自适應。
pos_bottom: Optional[str] = None,
# 月曆坐标的布局朝向。可選:
# 'horizontal', 'vertical'
orient: Optional[str] = None,
# 必填,月曆坐标的範圍 支援多種格式,使用示例:
# 某一年 range: 2017
# 某個月 range: '2017-02'
# 某個區間 range: ['2017-01-02', '2017-02-23']
# 注意 此寫法會識别為['2017-01-01', '2017-02-01']
# range: ['2017-01', '2017-02']
range_: Union[str, Sequence, int] = None,
# 星期軸的樣式,參考 `series_options.LabelOpts`
daylabel_opts: Union[LabelOpts, dict, None] = None,
# 月份軸的樣式,參考 `series_options.LabelOpts`
monthlabel_opts: Union[LabelOpts, dict, None] = None,
# 年份的樣式,參考 `series_options.LabelOpts`
yearlabel_opts: Union[LabelOpts, dict, None] = None,
)