2015-11-09 6 views
13

Dovrò generare un diagramma di Gantt ogni giorno. La mia idea è di usare l'api sirena inclusa nel pacchetto DiagrammeR di R.Come posso avere più di 4 colori di sezione nella sirena (Gantt) tramite DiagrammeR?

I miei dati avranno sempre la stessa struttura e, pertanto, ho creato un parser piuttosto primitivo incluso nell'esempio riproducibile.

Il problema che affronto è che dopo 4 sezioni lo stile riparte da zero:

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

posso cambiare rect.section.sectionx colore dalla CSS, ma non posso aggiungere di nuovi.

C'è un modo per cambiare/personalizzare il colore/stile della sezione?

mio R esempio riproducibile:

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

un po 'un trucco sporco, ma è possibile modificare 'numberSectionStyles' nel file' DiagrammeR.js' della libreria (è in questa cartella /Libreria/Framework/R.framework/Versions/3.2/Resources/library/ DiagrammeR/htmlwidgets per me). Ciò aumenterà il numero di sezioni. Avrai anche bisogno di aggiungere css per questi. Se vuoi questa modifica solo per uno dei tuoi diagrammi, puoi cambiare lo stesso file nella cartella 'lib' nella directory in cui stai mettendo il tuo file html. – NicE

+0

Non il modo migliore, ma certamente il trucco. Dovrò fare attenzione quando aggiorno i pacchetti, ma risolvo il mio particolare problema. –

risposta

1

Non è necessario modificare il file .js a tutti. mermaid supporta un parametro di configurazione numberSectionStyles. Basta aggiungere la seguente riga alla funzione R prima di salvare il codice HTML:

m$x$config$ganttConfig$numberSectionStyles = 6 

avrai ancora bisogno di regolare il file .css per aggiungere le sezioni aggiuntive seguenti lo stesso modello di quelli già esistenti.

Problemi correlati