2015-11-09 16 views
13

Günlük olarak bir gantt şeması oluşturmak zorundayım. Benim fikrim R's DiagrammeR paketinde bulunan denizkızı api kullanmaktır.DiagrammeR ile deniz kızı (Gantt) 'da 4'ten fazla bölüm rengi nasıl alabilirim?

Verilerim her zaman aynı yapıya sahip olacak ve bu nedenle, yeniden üretilebilir örnekte yer alan oldukça ilkel ayrıştırıcıyı oluşturdum.

ben yüz sorun 4 bölümden sonra şekillendirme sıfırdan yeniden başlar olmasıdır:

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

ben .css gelen rect.section.sectionx rengini değiştirebilir ama yenilerini eklemek mümkün değil.

Bölümün rengini/stilini değiştirmek/kişiselleştirmek için bir yol var mı? Sen hiç .js dosyasını değiştirmek gerekmez

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

Biraz kirli bir numara ama kütüphanenin 'DiagrammeR.js' dosyasındaki' numberSectionStyles 'öğesini değiştirebilirsiniz (bu klasörde bulunur: /Library/Frameworks/R.framework/Versions/3.2/Resources/library/ Benim için DiagrammeR/htmlwidgets). Bu bölümlerin sayısını artıracaktır. Ayrıca bunlar için css eklemeniz gerekecek. Bu değişikliğin sadece sizin diyagramınız için olmasını istiyorsanız, aynı dosyayı html dosyanızı koyduğunuz dizinde 'lib' klasöründe değiştirebilirsiniz. – NicE

+0

En çok R yolu değil, kesinlikle hile yapar. Paketleri güncellerken dikkatli olmalıyım, ancak özel sorunumu çözeceğim. –

cevap

1

:

Benim R tekrarlanabilir örnek

. mermaid, numberSectionStyles yapılandırma parametresini destekler. Sadece HTML kaydetmeden önce R fonksiyonu aşağıdaki satırı ekleyin:

m$x$config$ganttConfig$numberSectionStyles = 6 

Yine de, mevcut olanlar aynı şablondan aşağıdaki ek bölümler eklemek için .css dosyasını ayarlamak gerekir.

İlgili konular