Подтвердить что ты не робот

Как я могу иметь более четырех цветов раздела в русалке (Gantt) через DiagrammeR?

Мне придется генерировать диаграмму Ганта в ежедневной основе. Моя идея - использовать русалку api, включенную в пакет R DiagrammeR.

Мои данные всегда будут иметь одинаковую структуру, и поэтому я создал довольно примитивный синтаксический анализатор, который включен в воспроизводимый пример.

Проблема, с которой я сталкиваюсь, заключается в том, что после 4 разделов стилизация начинается снова с нуля:

rect.section.section0
rect.section.section1
rect.section.section2
rect.section.section3
rect.section.section0

Я могу изменить цвет rect.section.sectionx из .css, но я не могу добавить новые.

Есть ли способ изменить/персонализировать цвет раздела/стиль?

Мой R воспроизводимый пример:

library(DiagrammeR)
library(htmltools)

fromdftogantt<-function(df,Title="Proba",filename="proba.html"){
  txt<-paste("gantt","dateFormat  YYYY-MM-DD",paste("title",Title),"",sep="\n")
  for(i in unique(df$section)){
    txt<-paste(txt,paste("section",i),sep="\n")
    for(j in which(df$section==i)){

      txt<-paste(txt,paste0(df$name[j],":",df$status[j],",",
                            df$fecini[j],",",
                            df$fecfin[j]),sep="\n")
    }
    txt<-paste0(txt,"\n")
  }
  m<-mermaid(txt)
  m$x$config = list(ganttConfig = list(
    axisFormatter = list(list(
      "%m-%Y" 
      ,htmlwidgets::JS(
        'function(d){ return d.getDate() == 1 }' 
      )
    ))
  ))
  save_html(as.tags(m),file=filename)
}

df<-data.frame(section=letters[1:6],name=paste("Name",1:6),
               status=rep("active",6),
               fecini=as.Date(c("2015-02-03","2015-03-05","2015-04-07",
                                "2015-02-03","2015-03-05","2015-04-07")),
               fecfin=as.Date(c("2015-06-01","2015-04-30","2015-12-31",
                                "2015-06-01","2015-04-30","2015-12-31")),
               stringsAsFactors = FALSE)

fromdftogantt(df,Title="Proba",filename="proba.html")
4b9b3361

Ответ 1

Вам вообще не нужно изменять файл .js. mermaid поддерживает параметр конфигурации numberSectionStyles. Просто добавьте следующую строку в свою функцию R перед сохранением HTML:

m$x$config$ganttConfig$numberSectionStyles = 6

Вам все равно нужно настроить файл .css, чтобы добавить дополнительные разделы, следующие за тем же шаблоном, что и существующие.