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")
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
Non il modo migliore, ma certamente il trucco. Dovrò fare attenzione quando aggiorno i pacchetti, ma risolvo il mio particolare problema. –