日期高亮标记

作者

[编辑] 苗奔奔;

修改于

2026-01-17

日期高亮标记主要用于展示时间序列数据中某些特定日期范围内的数据变化情况,可用于活动频率概览和特殊日期标注。

示例

CalendHighlight DEMO

环境配置

  • 系统要求: 跨平台(Linux/MacOS/Windows)

  • 编程语言:R

  • 依赖包:calendR

# 安装包
if (!requireNamespace("calendR", quietly = TRUE)) {
  install.packages("calendR")
}

# 加载包
library(calendR)
sessioninfo::session_info("attached")
─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.5.2 (2025-10-31)
 os       Ubuntu 24.04.3 LTS
 system   x86_64, linux-gnu
 ui       X11
 language (EN)
 collate  C.UTF-8
 ctype    C.UTF-8
 tz       UTC
 date     2026-01-17
 pandoc   3.1.3 @ /usr/bin/ (via rmarkdown)
 quarto   1.8.27 @ /usr/local/bin/quarto

─ Packages ───────────────────────────────────────────────────────────────────
 package * version date (UTC) lib source
 calendR * 1.2     2023-10-05 [1] RSPM

 [1] /home/runner/work/_temp/Library
 [2] /opt/R/4.5.2/lib/R/site-library
 [3] /opt/R/4.5.2/lib/R/library
 * ── Packages attached to the search path.

──────────────────────────────────────────────────────────────────────────────

数据准备

数据为指定年的日历数据,可选择高亮显示某些日期范围。

# 构造数据
set.seed(1)
data <- rnorm(365)

# 查看数据
head(data)
[1] -0.6264538  0.1836433 -0.8356286  1.5952808  0.3295078 -0.8204684

可视化

1. 中国日期

需要注意如果在China,默认weeknamesmonthnames为中文,如果在其他国家/地区,默认weeknamesmonthnames为英文。

# 中国日期
p <- calendR(
    year = 2025,
    month = NULL,
    from = NULL,
    to = NULL,
    start = "M",
    mbg.col = 2,
    # orientation = "portrait",
    months.col = "white",
    months.pos = 0.5,
    monthnames = c(
        "一月",
        "二月",
        "三月",
        "四月",
        "五月",
        "六月",
        "七月",
        "八月",
        "九月",
        "十月",
        "十一月",
        "十二月"
    ),
    weeknames = c("一", "二", "三", "四", "五", "六", "日"),
    special.days = data,
    special.col = "#00338888",
    gradient = TRUE,
    low.col = "#FFFFFF88",
    font.family = "sans",
    font.style = "plain",
    day.size = 2,
    # ncol = 2,
    lunar = FALSE,
    pdf = FALSE
)

p

中国日期

2. 常规日期

# 常规日期
p <- calendR(
    year = 2025,
    month = NULL,
    from = NULL,
    to = NULL,
    start = "S",
    mbg.col = 2,
    # orientation = "portrait",
    months.col = "white",
    months.pos = 0.5,
    monthnames = c(
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December"
  ),
    weeknames = c("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"),
    special.days = data,
    special.col = "#00888888",
    gradient = TRUE,
    low.col = "#FFFFFF88",
    font.family = "sans",
    font.style = "plain",
    day.size = 2,
    # ncol = 2,
    lunar = FALSE,
    pdf = FALSE
)

p

常规日期

3. 日期期间

# 日期期间
data <- rnorm(30, 15, 10)
days <- rep(min(data) - 0.05, 365)
days[30:180] <- data

p <- calendR(
    year = 2025,
    month = NULL,
    from = NULL,
    to = NULL,
    start = "S",
    mbg.col = 2,
    # orientation = "portrait",
    months.col = "white",
    months.pos = 0.5,
    monthnames = c(
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December"
  ),
    weeknames = c("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"),
    special.days = days,
    special.col = "#FF000088",
    gradient = TRUE,
    low.col = "#FFFFFF88",
    font.family = "sans",
    font.style = "plain",
    day.size = 2,
    # ncol = 2,
    lunar = FALSE,
    pdf = FALSE
)

p

日期期间