You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Highcharter甘特图中将同一资源的两个节点放在同一行?

解决Highcharter甘特图同一资源多任务同行显示问题

要让同一资源(如"Nissan Leaf")的多个任务显示在同一行,核心是正确配置y轴为类别型,并移除不适用于甘特图的分组配置,以下是修正后的完整代码及说明:

修正后的代码

library(highcharter)
library(tidyverse)
library(lubridate)

data <- tibble(
  start = today(), 
  end = (today()+1), 
  duration = 1,
  completed = 0.95, 
  name = "Nissan Leaf", 
  id = 1
) %>% 
  add_row(
    start = (today()-2), 
    end = (today()+2.2),
    duration = 4.2,
    completed = 0.8, 
    name = "Tesla", 
    id = 2 
  ) %>% 
  add_row(
    start = (today()+1.5),
    end = (today()+2.2),
    duration = 0.7,
    completed = 0, 
    name = "Nissan Leaf", 
    id = 1 
  ) %>% 
  # 正确转换日期为时间戳(适配dplyr 1.0+语法)
  mutate(across(where(is.Date), datetime_to_timestamp)) %>% 
  arrange(start)


highchart(type = "gantt") %>% 
  # 配置y轴为类别型,自动按name字段分组行
  hc_yAxis(type = "category") %>%
  hc_add_series(
    name = "Program",
    data = data
    # 移除原分组配置,甘特图不需要柱状图的分组逻辑
  )

关键调整说明

  • y轴类型设置:通过hc_yAxis(type = "category"),让Highcharts将数据中的name字段作为y轴的类别标识,同一name的所有任务会自动分配到同一行。
  • 移除分组配置:原代码中的grouping参数是为柱状图设计的分组功能,在甘特图中使用会导致同一资源的任务被拆分到不同行,因此必须移除。
  • 数据处理修正:将过时的mutate_if替换为across(where(is.Date), ...),确保日期正确转换为Highcharts可识别的时间戳。

内容的提问来源于stack exchange,提问作者Jochem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:15:21