只要您必須從2個始發節點着色鏈接,您需要2種顏色的鏈接。 另外你總共有5個節點,所以你需要5種顏色。
允許創建2個陣列JSON格式顏色爲節點和鏈接
colors_link <- c('green', 'blue')
colors_link_array <- paste0("[", paste0("'", colors_link,"'", collapse = ','), "]")
colors_node <- c('yellow', 'lightblue', 'red', 'black', 'brown')
colors_node_array <- paste0("[", paste0("'", colors_node,"'", collapse = ','), "]")
接着,插入該陣列分成選項:
opts <- paste0("{
link: { colorMode: 'source',
colors: ", colors_link_array ," },
node: { colors: ", colors_node_array ," }
}")
並且,最後繪製圖表:
plot(gvisSankey(datSK, from="From", to="To", weight="Weight",
options=list(
sankey=opts)))
請注意,在選項中,colorMode被設置爲'source',這意味着您想對來自始發節點的鏈接進行着色。另外,「目標」設置爲顏色鏈接,destinated節點
編輯:添加說明對多sankeys
這是一個有點棘手找到如何分配顏色多sankeys。
我們需要建立其他dateframe:
datSK <- data.frame(From=c(rep("A",3), rep("B", 3), rep(c("X", "Y", "Z"), 2)),
To=c(rep(c("X", "Y", "Z"),2), rep("M", 3), rep("N", 3)),
Weight=c(5,7,6,2,9,4,3,4,5,6, 4,8))
這裏我們要改變的顏色只有陣列。命令內置的情節是一樣的 假設我們希望這些色彩爲節點和鏈接:
colors_link <- c('green', 'blue', 'yellow', 'brown', 'red')
colors_link_array <- paste0("[", paste0("'", colors_link,"'", collapse = ','), "]")
colors_node <- c('yellow', 'lightblue', 'red', 'black', 'brown', 'green', 'brown')
colors_node_array <- paste0("[", paste0("'", colors_node,"'", collapse = ','), "]")
結果將是:
最棘手的部分是要了解這些是如何顏色被指定爲:
- 按照它們在數據集中出現的順序分配鏈接(row_wise)
對於顏色分配在順序的情節是建立在節點。
- 從A到X,Y,Z - 綠色
- 從X到M,N - 藍色
- 從Y到M,N - 黃色
- 從Z到M,N - 棕色
- 從B到X,Y,Z - 紅
關於如何熱平衡圖格式的更多的詳細信息:https://developers.google.com/chart/interactive/docs/gallery/sankey
你能擴展你的答案爲[多級Sankeys(https://developers.google.com/chart/interactive/docs/gallery/sankey#multilevel-sankeys)? – zx8754 2016-04-18 12:53:26
是否有可能從一個節點出現兩種不同的顏色?換句話說,可以在不使用「source」或「target」作爲colorMode的情況下設置顏色嗎?請參閱:https://stackoverflow.com/questions/45291340/how-to-color-two-links-coming-out-of-the-same-node-or-going-to-the-same-node-w – 2017-07-27 16:22:45