【问题标题】:R - Riverplot package uses - Sankey diagramR - Riverplot 包使用 - 桑基图
【发布时间】:2014-07-25 11:18:18
【问题描述】:

我尝试在 1 月之前使用 riverplot package 绘制桑基图。但是我的案例非常复杂,我还没有找到修复图表的方法,所以我发布了这个问题,希望这有助于找到我的问题的答案或改进包的方法。

我的图表如下。正如您在第一张图片中看到的我的图表,节点的状态相互重叠并且不可读。是否可以在图表的一侧显示节点名称,并且每个节点名称将在它所代表的车道旁边。想法显示在下面的第二张图片中,我们有多个车道,然后状态应该在侧面以解释什么是车道均值。

非常感谢!

我的案例很难生成样本,但我重用了包含在 Riverplot 包中的 1 月样本,并进行了一些修改。在这里

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)

【问题讨论】:

  • 能否提供reproducible example
  • 我在 Riverplot 包中重复使用标准样本。该示例的节点 C 名称与其他节点名称重叠,这使得阅读与我的情况相似但不完全相同。

标签: r plot charts sankey-diagram riverplot


【解决方案1】:

riverplotsrt 参数加上更短的标签是答案吗?

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2016-04-06
    • 2012-04-15
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    相关资源
    最近更新 更多