标签: networkd3

使用R突出显示Sankey图中从头到尾的所有连接路径

当我点击节点以了解特定节点的整个故事时,我想强调整个路径,这里是一个例子 - http://bl.ocks.org/git-ashish/8959771.

请检查此链接,你会发现在javscript中突出显示路径的功能,但请注意,此功能不能达到我想要的效果,它突出显示与被点击的节点相关的链接以及与目标节点相关的链接.我想要的是突出显示与点击的节点相关的所有链接.

d3 Sankey - 从开始到结束突出显示所有连接的路径

这是我需要的一个例子, 在此输入图像描述 这是整个图,我需要的是,当我点击曼谷时,它突出显示与数据框中曼谷相同的所有节点,如突出显示与ClimateChange和EnergyShortage的链接,......然后突出显示基础设施和生态系统,和领导力和战略,......这就是我想要的.这是另一张图片,显示与曼谷相关的节点使用闪亮来分析它.

在此输入图像描述

这是当我在bl.ocks和链接的问题中使用highlight_node_links时会发生什么,这是错误的,并没有显示节点和曼谷之间的关系. 在此输入图像描述

以下是曼谷的数据,向您展示列如何相互关联,当您使用这些数据时,它将仅生成第二张图片.

structure(list(City = c("Bangkok", "Bangkok", "Bangkok", "Bangkok", 
"Bangkok", "Bangkok", "Bangkok", "Bangkok", "Bangkok", "Bangkok", 
"Bangkok", "Bangkok", "Bangkok", "Bangkok", "Bangkok", "Bangkok"
), ResiliencyChallenge = c("ClimateChange", "ClimateChange", 
"ClimateChange", "ClimateChange", "ClimateChange", "InfrastructureFaliure", 
"EnergyShortage", "Pollution", "Pollution", "Pollution", "TransportationSystemFailure", 
"TransportationSystemFailure", "TransportationSystemFailure", 
"TransportationSystemFailure", "TransportationSystemFailure", 
"TransportationSystemFailure"), CRI.Dimesnsion.1 = c("Infrastructure & Ecosystems", 
"Infrastructure & Ecosystems", "Infrastructure & Ecosystems", 
"Infrastructure & Ecosystems", "Infrastructure & Ecosystems", 
"Infrastructure & Ecosystems", "Infrastructure & Ecosystems", 
"Leadership & Strategy", "Leadership & Strategy", "Infrastructure …
Run Code Online (Sandbox Code Playgroud)

r rcharts sankey-diagram networkd3 htmlwidgets

12
推荐指数
1
解决办法
1774
查看次数

在networkD3 sankey图中的节点标签中放置换行符

++++++++++++++++

更新: 我认为我的问题的答案是你不能放入换行符.一位同事向我指出节点标签是SVG块,它不支持换行符.

++++++++++++++++

如何为使用networkD3 R软件包生成的sankey图的节点标签添加换行符?

借用将文本值放置到sankey图右侧的示例,我可以为标签添加值:

library(networkD3)
library(data.table)
set.seed(1999)
links <- data.table(
  src = rep(0:4, times=c(1,1,2,3,5)),
  target = sample(1:11, 12, TRUE),
  value = sample(100, 12)
)[src < target, ]  # no loops
nodes <- data.table(name=LETTERS[1:12])

#### Need to hover to get counts
##sankeyNetwork(Links=links, Nodes=nodes, Source='src', Target='target',
##  Value='value', NodeID='name', fontSize=16)

## Add text to label
txt <- links[, .(total = sum(value)), by=c('target')]
nodes[txt$target+1L, name := paste0(name, ' (', txt$total, ')')]

## Displays the counts as part of …
Run Code Online (Sandbox Code Playgroud)

r sankey-diagram networkd3 htmlwidgets

11
推荐指数
1
解决办法
670
查看次数

在选项卡部分调整sankey图

在下面给出的r-markdown文档中,我使用选项卡部分来显示sankey图.

但是,当sankey绘图位于第一个以外的选项卡中时,调整(使用htmlwidgets::onRender功能)不起作用.有人知道克服这个问题的方法吗?

相关问题:如何在Sankey图中控制节点标签

---
title: "Untitled"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)

library(networkD3)
library(htmlwidgets)

nodes <- data.frame('name' = 
c('Node0','Node1','Node2','Node3','Node4','Node5','Node6',                   
'Node7','Node8','Node9','Node10','Node11','Node12','Node13',
'Node14','Node15','Node16','Node17','Node18','Node19',
'Node20','Node21','Node22','Node23','Node24','Node25',
'Node26','Node27','Node28','Node29','Node30','Node31',
'Node32','Node33'))

links = as.data.frame(matrix(c(
  0, 3,140,
  0, 4,140,
  0, 5,140,
  0, 6,140,
  1, 3,140,
  1, 4,140,
  1, 5,140,
  1, 6,140,
  2, 3,140,
  2, 4,140,
  2, 5,140,
  2, 6,140,
  3, 7,130,
  3, 8,130,
  3, 9,50,
  3,10,50,
  3,11,50,
  4,12,140,
  4,13,100,
  4,14,100,
  4,15,80,
  5,16,150,
  5,17,150,
  5,18,60,
  5,19,60,
  6,20,180,
  6,21,80,
  6,22,80,
  6,23,80,
  7,24,13, …
Run Code Online (Sandbox Code Playgroud)

r d3.js knitr sankey-diagram networkd3

11
推荐指数
1
解决办法
529
查看次数

R networkD3包:simpleNetwork()中的节点着色

networkD3包(见这里这里)允许用户创建简单的互动网络:

# Load package
library(networkD3)

# Create fake data
src <- c("A", "A", "A", "A",
        "B", "B", "C", "C", "D")
target <- c("B", "C", "D", "J",
            "E", "F", "G", "H", "I")
networkData <- data.frame(src, target)

# Plot
simpleNetwork(networkData)
Run Code Online (Sandbox Code Playgroud)

有没有办法指定我希望src矢量中的所有元素都是某种颜色,同时允许target矢量中的所有元素都是不同的颜色?这将允许我在视觉上区分src节点和target网络中的节点.

目前似乎不支持此功能simpleNetwork()(但我希望有人可以帮助我使用自制程序脚本):

在此输入图像描述

这里提出了一个类似但不相关的问题.

javascript r networkd3 htmlwidgets

10
推荐指数
2
解决办法
4099
查看次数

R的Sankey图

试图在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)
Run Code Online (Sandbox Code Playgroud)

这导致:

从手册中参考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 = …
Run Code Online (Sandbox Code Playgroud)

r d3.js sankey-diagram networkd3 htmlwidgets

9
推荐指数
1
解决办法
3522
查看次数

将数据帧转换为treeNetwork兼容列表

请考虑以下数据框:

   Country     Provinces          City Zone
1   Canada   Newfondland      St Johns    A
2   Canada           PEI Charlottetown    B
3   Canada   Nova Scotia       Halifax    C
4   Canada New Brunswick   Fredericton    D
5   Canada        Quebec            NA   NA
6   Canada        Quebec   Quebec City   NA
7   Canada       Ontario       Toronto    A
8   Canada       Ontario        Ottawa    B
9   Canada      Manitoba      Winnipeg    C
10  Canada  Saskatchewan        Regina    D
Run Code Online (Sandbox Code Playgroud)

是否有一种聪明的方法将其转换为treeNetwork兼容列表(从networkD3包中),形式如下:

CanadaPC <- list(name = "Canada",
                 children = list(
                   list(name = "Newfoundland",
                        children = list(list(name = "St. …
Run Code Online (Sandbox Code Playgroud)

r networkd3

8
推荐指数
1
解决办法
850
查看次数

将文本值放在sankey图的右侧

有没有把文字放在使用networkD3渲染的sankey图上的技巧?我希望将端点的值显示为其框右侧的文本.我意识到悬停在框上会显示值,但随着框变小,在许多情况下,如果值始终在侧面可见,则描绘信息会更容易.

这是一个例子; 我可以通过添加值作为标签的一部分来破解它,但是将值显示在图的右侧会更好.

library(networkD3)
library(data.table)
set.seed(1999)
links <- data.table(
  src = rep(0:4, times=c(1,1,2,3,5)),
  target = sample(1:11, 12, TRUE),
  value = sample(100, 12)
)[src < target, ]  # no loops
nodes <- data.table(name=LETTERS[1:12])

## Need to hover to get counts
sankeyNetwork(Links=links, Nodes=nodes, Source='src', Target='target',
  Value='value', NodeID='name', fontSize=16)

## Add text to label
txt <- links[, .(total = sum(value)), by=c('target')]
nodes[txt$target+1L, name := paste0(name, ' (', txt$total, ')')]

## Displays the counts as part of the labels
sankeyNetwork(Links=links, Nodes=nodes, Source='src', Target='target',
  Value='value', …
Run Code Online (Sandbox Code Playgroud)

r sankey-diagram networkd3

8
推荐指数
1
解决办法
1931
查看次数

将关系数据转换为R中的分层列表

这是我的第一个问题; 所以,请温柔.

我有一些数据形式:

library('networkD3')
    Relationships<- data.frame(Parent=c("earth","earth","forest","forest","ocean","ocean","ocean","ocean"),
                  Child=c("ocean","forest","tree","sasquatch","fish","seaweed","mantis shrimp","sea monster"))
> Relationships
  Parent         Child
1  earth         ocean
2  earth        forest
3 forest          tree
4 forest     sasquatch
5  ocean          fish
6  ocean       seaweed
7  ocean mantis shrimp
8  ocean   sea monster
Run Code Online (Sandbox Code Playgroud)

本质上,这是一个可用于制作网络地图的边缘列表:

net <- graph_from_data_frame(d = Relationships,
                             directed = T)
plot(net)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想将它转换为可以在diagonalNetwork下面的函数中使用的形式.

Hierarchical_list <- list(name = "earth",
                 children = list(list(name = "ocean",
                                      children = list(list(name = "mantis shrimp"),
                                                      list(name = "fish"),
                                                      list(name = "sea monster"),
                                                      list(name = "seaweed")
                                                      )),
                                 list(name …
Run Code Online (Sandbox Code Playgroud)

r hierarchical-data networkd3

8
推荐指数
2
解决办法
3275
查看次数

如何在R中将html输出捕获为png

我使用 R 中由 networkD3 包创建的交互式输出。我知道如何将输出保存为 html 页面,但我还需要将图表的“静态”版本保存为 .png 文件。

代码如下所示:

# Load package
library(networkD3)

# Create fake data
src <- c("A", "A", "A", "A", "B", "B", "C", "C", "D")
target <- c("B", "C", "D", "J", "E", "F", "G", "H", "I")
networkData <- data.frame(src, target)

# Plot
simpleNetwork(networkData)
Run Code Online (Sandbox Code Playgroud)

我可以通过单击“导出”然后“另存为图像”来保存输出。但是,我更喜欢在我的代码中使用一些命令来保存图片。

png r networkd3 htmlwidgets

7
推荐指数
1
解决办法
1万
查看次数

返回嵌套级别和值的嵌套列表

我想使用networkD3可视化一些深层嵌套的数据.在发送之前,我无法弄清楚如何将数据转换成正确的格式radialNetwork.

以下是一些示例数据:

level <- c(1, 2, 3, 4, 4, 3, 4, 4, 1, 2, 3)
value <- letters[1:11]
Run Code Online (Sandbox Code Playgroud)

where level表示嵌套的级别,value是节点的名称.通过使用这两个向量,我需要将数据转换为以下格式:

my_list <- list(
  name = "root",
  children = list(
    list(
      name = value[1], ## a
      children = list(list(
        name = value[2], ## b
        children = list(list(
          name = value[3], ## c
          children = list(
            list(name = value[4]), ## d
            list(name = value[5]) ## e
          )
        ),
        list(
          name = value[6], ## f
          children …
Run Code Online (Sandbox Code Playgroud)

recursion r nested-lists networkd3

7
推荐指数
1
解决办法
936
查看次数