2014-07-25 86 views
1

我試圖在1月份之前使用riverplot package繪製Sankey圖表。然而,我的情況非常複雜,我還沒有找到修復我的圖表的方法,因此我發佈了這些問題,希望這有助於找到我的問題的一些答案或改進軟件包的方法。R - Riverplot軟件包使用 - Sankey圖

我的圖表如下。正如你可以看到我的圖表在第一張圖片中有節點的狀態彼此重疊並且不可讀。是否可以在圖表的側面顯示節點名稱,並且每個節點名稱都將位於它所代表的通道​​旁邊。這些想法顯示在下面的第二個圖像中,我們有多個車道,然後狀態應該在旁邊解釋什麼是車道的意思。

非常感謝!

enter image description here

enter image description here

我的情況下,難以產生樣本但我重用列入riverplot包經過一些修改一月樣品。這是

library(riverplot) 
temp <- function() { 
ret <- list(nodes = 
       data.frame(ID = LETTERS[1:8], x = c(1,2, 2, 3, 3, 4, 5, 1), 
          labels = c(NA, NA, "Node C Node C Node C", rep(NA, 4), "Node H Node H Node H"), 
          stringsAsFactors = FALSE), 
      styles = list(A = list(col = "#00990099", 
            lty = 0, textcol = "white"), 
          H = list(col = "#FF000099", textcol = "white"), 
          B = list(col = "#00006699", textcol = "white"),                                           F = list(col = "yellow"), D = list(col = "#00FF0099"))) 
ret$edges <- data.frame(N1 = c("A", "A", "A", "H", "H", "H", 
           "B", "B", "C", "C", "C"), N2 = 
          c("B", "C", "D", "D", "F", "G", "D", "F", "D", "E", "F"), 
         Value = c(10, 20, 5, 10, 10, 20, 5, 10, 20, 15, 10), stringsAsFactors = F) 
rownames(ret$nodes) <- ret$nodes$ID 
class(ret) <- c(class(ret), "riverplot") 
return(ret) 
} 
x <- temp(x) 
plot(x) 
+2

能否請您提供一個[重複的例子(http://adv-r.had.co.nz/Reproducibility.html)? – lukeA

+0

我重複使用了河流地圖包中的標準樣本。該示例中的節點C名稱與其他節點名稱重疊,這使得與我的情況類似但略有難於閱讀,但不完全相同。 – sinhnhn

回答

0

是對srt參數riverplot加上短標籤的答案嗎?

ret <- list(nodes = 
       data.frame(ID = LETTERS[1:8], x = c(1,2, 2, 3, 3, 4, 5, 1), 
    #      labels = c(NA, NA, "Node C Node C Node C", rep(NA, 4), "Node H Node H Node H"), 
      labels = c(NA, NA, "Node C", rep(NA, 4), "Node H"), 
         stringsAsFactors = FALSE), 
      styles = list(A = list(col = "#00990099", 
            lty = 0, textcol = "white"), 
          H = list(col = "#FF000099", textcol = "white"), 
          B = list(col = "#00006699", textcol = "white")))                                           F = list(col = "yellow"), D = list(col = "#00FF0099"))) 
ret$edges <- data.frame(N1 = c("A", "A", "A", "H", "H", "H", 
           "B", "B", "C", "C", "C"), N2 = 
          c("B", "C", "D", "D", "F", "G", "D", "F", "D", "E", "F"), 
         Value = c(10, 20, 5, 10, 10, 20, 5, 10, 20, 15, 10), stringsAsFactors = F) 
rownames(ret$nodes) <- ret$nodes$ID 
class(ret) <- c(class(ret), "riverplot") 

riverplot(ret, srt = 0) 

enter image description here