2015-11-09 10 views
13

Będę musiał generować wykres Gantta codziennie. Moim pomysłem jest użycie syreny api zawartej w pakiecie R's DiagrammeR.Jak mogę uzyskać więcej niż 4 kolory sekcji w syrenie (Gantt) przez DiagrammeR?

Moje dane będą zawsze miały tę samą strukturę i dlatego utworzyłem dość prymitywny analizator składni, który jest zawarty w odtwarzalnym przykładzie.

Problemem jest to, że mam twarz po 4 odcinkach stylizacji rozpoczyna się ponownie od zera:

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

mogę zmienić rect.section.sectionx kolor z .css ale nie mogę dodać nowych.

Czy istnieje sposób na zmianę/personalizację koloru/stylizacji sekcji?

My R powtarzalny przykład:

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") 
+3

Trochę brudnej sztuczki, ale możesz zmienić "numerSectionStyles" w pliku "DiagrammeR.js" biblioteki (znajduje się w tym folderze /Library/Frameworks/R.framework/Versions/3.2/Resources/library/ DiagrammeR/htmlwidgets dla mnie). Zwiększy to liczbę sekcji. Będziesz także musiał dodać css dla tych. Jeśli chcesz tę zmianę tylko dla jednego ze swoich diagramów, możesz zmienić ten sam plik w folderze 'lib' w katalogu, w którym umieszczasz swój plik HTML. – NicE

+0

Nie najbardziej R sposób, ale na pewno robi lewę. Będę musiał zachować ostrożność podczas aktualizacji pakietów, ale rozwiązuje mój konkretny problem. –

Odpowiedz

1

Nie trzeba zmienić plik .js w ogóle. mermaid obsługuje parametr konfiguracyjny numberSectionStyles. Wystarczy dodać następującą linię do funkcji R przed zapisaniem HTML:

m$x$config$ganttConfig$numberSectionStyles = 6 

Będziesz nadal trzeba dostosować plik .css dodać następujące dodatkowe sekcje tego samego szablonu jak już istniejących.

Powiązane problemy