小编CJ *_*man的帖子

使用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
查看次数

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
查看次数

R:当鼠标悬停在(图形)visnetwork 上时显示“弹出”信息

我模拟了一些数据并使用 visnetwork 在 R 中创建了一个图形网络:

library(igraph)
library(dplyr)
library(visNetwork)

#create file from which to sample from
x5 <- sample(1:100, 1100, replace=T)
#convert to data frame
x5 = as.data.frame(x5)

#create first file (take a random sample from the created file)
a = sample_n(x5, 1000)
#create second file (take a random sample from the created file)
b = sample_n(x5, 1000)

#combine
c = cbind(a,b)
#create dataframe
c = data.frame(c)
#rename column names
colnames(c) <- c("a","b")


#create graph
graph <- graph.data.frame(c, directed=F)
graph <- …
Run Code Online (Sandbox Code Playgroud)

r graph popup igraph visnetwork

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

如何在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万
查看次数

在 Shiny 中打印桑基图

我创建了一个像这样的桑基图:

#install.packages("networkD3")
library(networkD3)
nodes = data.frame("name" = 
                     c("Retour", # Node 0
                       "niet tevreden/ontevreden", # Node 1
                       "fout", # Node 2
                       "stuk",
                       "adres",
                       "verpakking",
                       "gebroken/glas"))# Node 3
links = as.data.frame(matrix(c(
  0, 1, 10, # Each row represents a link. The first number
  0, 2, 20, # represents the node being conntected from. 
  0, 3, 30,
  2, 4, 8,
  3, 5, 10,
  3, 6, 12# the second number represents the node connected to.
  ),# The third number is the value of the …
Run Code Online (Sandbox Code Playgroud)

r shiny sankey-diagram networkd3

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

Firefox中sankeyNetwork(NetworkD3)的微小绘图输出

由于每个对象,我用的时候获得在Firefox中非常小的情节sankeyNetwork(),但无法在Chrome或RStudio.

我没有在脚本中包含任何CSS或JS - 下面的代码为我生成了这个结果.

我错过了什么CSS属性吗?

我使用的是R 3.4.1,闪亮的1.1.0,networkD3 0.4和Firefox 52.9.0.

火狐: 火狐

铬: 铬

library(shiny)
library(magrittr)
library(shinydashboard)
library(networkD3)

labels = as.character(1:9)
ui <- tagList(
  dashboardPage(
    dashboardHeader(
      title = "appName"
    ),
    ##### dasboardSidebar #####
    dashboardSidebar(
      sidebarMenu(
        id = "sidebar",
        menuItem("plots",
                 tabName = "sPlots")
      )
    ),
    ##### dashboardBody #####
    dashboardBody(
      tabItems(
        ##### tab #####
        tabItem(
          tabName = "sPlots",
          tabsetPanel(
            tabPanel(
              "Sankey plot",
              fluidRow(
                box(title = "title",
                    solidHeader = TRUE, collapsible = TRUE, status = "primary",
                    sankeyNetworkOutput("sankeyHSM1")
                )
              )
            ) …
Run Code Online (Sandbox Code Playgroud)

r shiny sankey-diagram networkd3 htmlwidgets

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

使用用户定义的颜色修改networkD3 sankey图

我在networkD3包中创建了一个sankey图.我想修改节点和链接的颜色和透明度.

我的数据networkD3_data最后附上.

问题1:如何使用用户定义的调色板修改节点颜色?

我不知道如何使用用户定义的调色板修改颜色.我必须使用特定于每个节点源的相同调色板来与我拥有的其他绘图保持一致.

目前,通过定义,我可以让每个源节点都是不同的颜色,所有目标节点都是相同的颜色NodeGroup.下面的图表接近我想要的,但是现在我想自己指定每个源节点的颜色.

library(networkD3)
sankeyNetwork(Links = networkD3_data$links, Nodes = networkD3_data$nodes, Source = "source", Target = "target", Value = "value", NodeID = "name", NodeGroup="group", fontSize=14)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

?sankeyNetwork说有一个colourScale参数,它带有"指定节点的分类色标的字符串".我认为这意味着我可以将具有所需颜色的列添加到networkD3_data$nodes数据框并按此调用colourScale:

sankeyNetwork(Links = networkD3_data$links, Nodes = networkD3_data$nodes, Source = "source", Target = "target", Value = "value", NodeID = "name", NodeGroup="group", fontSize=14, colourScale="colors")
Run Code Online (Sandbox Code Playgroud)

但这不起作用,没有产生情节.我搜索了stackoverflow,并在2014年找到了答案:在这里,但我认为这不再适用,因为我在Error: unexpected symbol调用这些提议的解决方案时遇到错误(或者我可能只是不知道如何正确实现).

d3.scale.ordinal().range(["#7d3945","#e0677b", "#244457"])
d3.scaleOrdinal().range(["#7d3945","#e0677b", "#244457"])  
Run Code Online (Sandbox Code Playgroud)

问题2:是否可以定义源和目标的显示顺序?

那么源从Source0到Source10列出,目标从Target11到Target47?这套在哪里?我知道这对于允许算法最佳地定位节点是违反直觉的.

问题3:如何使用用户定义的调色板修改链接颜色并更改透明度/不透明度?

我还想使用与源相同的颜色方案对源发出的链接进行颜色编码.我可以通过定义来做到这一点LinkGroup,见下图.我再次接近我想要的,但我只需要指定自己使用的颜色,我不知道在哪里修改它.我还想调整不透明度,使源颜色比链接颜色更坚固.

sankeyNetwork(Links = …
Run Code Online (Sandbox Code Playgroud)

r sankey-diagram networkd3 htmlwidgets

6
推荐指数
1
解决办法
2558
查看次数

保存为网页时如何为 networkD3 可视化添加标题?

我使用以下代码创建了一个交互式可视化:

library(networkD3)

nodes = data.frame("name" = c("node1", "node2","node3", "node4", "node5", "node6", "node7"))
links = as.data.frame(matrix(c(
0,1,7937,
0,2,6990,
0,3,2483,
1,4,2120,
2,4,666,
3,4,282,
1,5,4583,
2,5,5657,
3,5,731,
1,6,1234,
2,6,756,
3,6,1470), byrow = TRUE, ncol = 3))

names(links) = c("source", "target", "value")

sankey <- sankeyNetwork(Links = links, Nodes = nodes,
          Source = "source", Target = "target",
          Value = "value", NodeID = "name",
          fontSize= 12, nodeWidth = 15)'
Run Code Online (Sandbox Code Playgroud)

这是我第一次使用 networkD3 包(或任何与此相关的交互式包),并且通过玩弄我发现为了保持它的交互性,它必须作为网页发布(或者有其他方式吗??)但是查看包的文档我看不到添加标题或标题/评论的方法。我想分享这一轮工作,所以需要在发布的网页上解释每个级别的理想含义

r networkd3 htmlwidgets htmltools

6
推荐指数
2
解决办法
1998
查看次数