Pyecharts 日历图

Pyecharts 日历图语法

在 Pyecharts 中,我们可以使用 Calendar 这个模块来绘制一个日历图。日历图用于提供一段时间的日历布局,使得我们可以更好地查看所选日期每一天的数据。

语法:

c = Calendar()
c.add(
    series_name, 
    yaxis_data, 
    calendar_opts=opts.CalendarOpts(range_='年份')
)

说明:

对于日历图来说,它也是使用 add() 方法。参数 series_name 用于定义系列名,参数 yaxis_data 用于定义数据部分。需要注意的是,日历图的 add() 方法是使用参数 yaxis_data 来定义数据部分,而不是使用参数 data_pair 来定义数据部分。

参数 calendar_opts 是一个必选参数,range_ 用于指定所选的年份。

示例 1:Pyecharts 绘制日历图

import numpy as np
import pandas as pd
from pyecharts.charts import Calendar
import pyecharts.options as opts

# 数据
data = [
    ['2025-01-01', 450],
    ['2025-01-02', 420],
    ['2025-01-03', 560],
    ['2025-01-04', 480],
    ['2025-01-05', 530],
    ['2025-01-06', 620],
    ['2025-01-07', 600],
    ['2025-01-08', 480],
    ['2025-01-09', 550],
    ['2025-01-10', 670]
]
df = pd.DataFrame(data, columns=['日期', '销量'])
df_array = np.array(df)            # 转换为数组
df_list = df_array.tolist()        # 转换为列表

# 绘图
c = Calendar()
c.add(series_name='', yaxis_data=df_list, calendar_opts=opts.CalendarOpts(range_='2025'))

# 渲染
c.render()

运行生成的 render.html,浏览器效果如下图所示。

pyecharts日历图

分析:

日历图展示的是一年的数据,左边的 S、M、T 等代表是星期,顶部的 Jan、Feb、Mar 代表的是月份,然后每一个单元格代表一天。当鼠标移到某一个单元格时,会显示该天对应的数据,如下图所示。

pyecharts日历图的提示框

由于这个例子只有 2025 年中 10 天的数据,所以只有 10 个单元格绘制了颜色,其他白色部分代表的是没有数据的日期。

此外需要注意一下日历图的数据部分,它的数据要求是一个二维列表。列表每一项的第 1 个元素是日期,第 2 个元素是数据。下面 2 种方式都是可行的。

# 方式1
[
    ['2025-01-01', 450],
    ['2025-01-02', 420],
    ['2025-01-03', 560],
    ['2025-01-04', 480],
    ['2025-01-05', 530]
]

# 方式2
[
    ('2025-01-01', 450),
    ('2025-01-02', 420),
    ('2025-01-03', 560),
    ('2025-01-04', 480),
    ('2025-01-05', 530)
]

Pyecharts 日历图案例

当前项目下的 data 文件夹中有一个 steps.csv 文件,项目结构如下图所示。steps.csv 文件保存的是某人 2025 年内每天的微信步数,部分内容如下图所示。

pyecharts日历图的项目结构

steps.csv部分内容

示例 2:Pyecharts 日历图的应用

import numpy as np
import pandas as pd
from pyecharts.charts import Calendar
import pyecharts.options as opts

# 读取文件
df = pd.read_csv(r'data/steps.csv')
df_array = np.array(df)                     # 转换为数组
df_list = df_array.tolist()                 # 转换为列表

# 绘图
c = Calendar()
c.add(
    series_name='',
    yaxis_data=df_list,
    calendar_opts=opts.CalendarOpts(range_='2025')
)

# 渲染
c.render()

运行生成的 render.html,浏览器效果如下图所示。

pyecharts日历图的应用

分析:

红色部分代表的是有数据的日期。不过整个日历都是红色,这样体验可不好,我们还可以使用 set_global_opts() 方法结合 visualmap_opts 参数来添加颜色区分,请看下面例子。

示例 3:添加区分

import numpy as np
import pandas as pd
from pyecharts.charts import Calendar
import pyecharts.options as opts

# 读取文件
df = pd.read_csv(r'data/steps.csv')
df_array = np.array(df)                       # 转换为数组
df_list = df_array.tolist()                   # 转换为列表
steps_min = int(df['步数'].min())              # 获取最小值
steps_max = int(df['步数'].max())              # 获取最大值

# 绘图
c = Calendar()
c.add(series_name='', yaxis_data=df_list, calendar_opts=opts.CalendarOpts(range_='2025'))
# 添加区分
c.set_global_opts(visualmap_opts=opts.VisualMapOpts(
    type_='color',
    min_=steps_min,
    max_=steps_max,
    pos_bottom=50,
    pos_right=0
))

# 渲染
c.render()

运行生成的 render.html,浏览器效果如下图所示。

pyecharts日历图添加区分

分析:

添加了颜色区分之后,我们就可以清楚看到哪些日期步数比较多,哪些日期步数比较少了。

上一篇: Pyecharts 水球图

下一篇: Pyecharts 词云图

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号