天天看點

Python資料可視化 Pyecharts 制作 Calendar 月曆熱圖

Python3 的 Pyecharts 制作 Calendar(月曆熱圖) 時需要使用的設定參數和常用模闆案例,可根據實際情況對案例中的内容進行調整即可。

Python資料可視化 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()           
Python資料可視化 Pyecharts 制作 Calendar 月曆熱圖

月曆熱圖帶工具箱

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()           
Python資料可視化 Pyecharts 制作 Calendar 月曆熱圖

在這裡插入圖檔描述

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