当前位置:  开发笔记 > 编程语言 > 正文

R的Sankey图

如何解决《R的Sankey图》经验,为你挑选了1个好方法。

试图在R的networkD3包的帮助下制作一个相当通用的Sankey图.仅供参考 - 这是包装手册中的示例

library(networkD3)
library(jsonlite)
library(magrittr)

energy <- "https://cdn.rawgit.com/christophergandrud/networkD3/master/JSONdata/energy.json" %>% 
      fromJSON

sankeyNetwork(Links = energy$links, 
              Nodes = energy$nodes, 
              Source = "source",
              Target = "target", 
              Value = "value", 
              NodeID = "name",
              units = "TWh", 
              fontSize = 12, 
              nodeWidth = 30)

这导致:

从手册中参考Sankey图

我相当简单的扩展包括使用以下基础数据构建图表:

links <- structure(list(source = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 4L, 
                                         5L, 4L, 5L),
                                       .Label = c("1", "2", "3", "4", "5"),
                                       class = "factor"), 
                    target = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 4L, 
                                         4L),
                                       .Label = c("4", "5", "6", "7"),
                                       class = "factor"), 
                    value = c(88L, 774L, 1220L, 412L, 5335L, 96L, 3219L, 
                              1580L, 111L, 7607L)), 
               row.names = c(NA, 10L), 
               class = "data.frame", 
               .Names = c("source", "target", "value"))

nodes <- structure(list(lab = c("A", "B", "C", "D", "E", "F", "G")),
               row.names = c(NA, -7L),
               .Names = "lab", class = "data.frame")

选择这个简单的应用程序,以便我的数据最接近反映手动示例.当我运行类似的功能时,尽管:

sankeyNetwork(Links = links, 
              Nodes = nodes, 
              Source = "source",
              Target = "target", 
              Value = "value", 
              NodeID = "lab")

什么都没发生.我的错是什么?



1> jbaums..:

如果您开始编号,source并且target0:

# First coercing elements of links to numeric, so that we can subtract 1
links[] <- lapply(links, function(x) as.numeric(as.character(x)))
links[, 1:2] <- links[, 1:2] - 1
sankeyNetwork(links, nodes, 'source', 'target', 'value', NodeID='lab')

在此输入图像描述

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有