我正在尝试在R中使用一个名为d3Network的包来可视化某些网络,我在R中使用了这个例子:
# Load data
data(MisLinks)
data(MisNodes)
# Create graph
d3ForceNetwork(Links = MisLinks, Nodes = MisNodes, Source = "source",
Target = "target", Value = "value", NodeID = "name",
Group = "group", opacity = 0.4)
Run Code Online (Sandbox Code Playgroud)
它只给了我一堆脚本而不是一个情节.我在互联网上看到了这个例子,似乎其他人从未遇到过这种问题.我做错了什么或遗漏了什么?而且我想知道如何指定Source节点和Target节点的颜色.
提前致谢
我一直试图在R中使用networkD3包绘制网络一周.该simpleNetwork
功能正常工作,但它不能很好地控制图形的外观.该forceNetwork
功能就是为了这个目的:显示具有丰富视觉特征的图形.
我遇到的问题几乎与此问题相同.我仔细阅读了包文档,并尝试了上述线程中提出的解决方案,没有运气:我得到的是一个没有边连接它们的节点云.
我的data.frame
s:
EDG
Gene1 Gene2 Prob
1 22 3
2 22 6
3 22 6
4 22 9
5 22 3
6 22 4
7 22 8
8 22 4
9 22 6
10 22 8
11 22 6
12 22 10
13 22 6
14 22 3
15 22 6
16 22 6
17 22 0
18 22 4
19 22 6
20 22 4
Run Code Online (Sandbox Code Playgroud)
VERT
Symbol Chr …
Run Code Online (Sandbox Code Playgroud) 我使用包的forceNetwork()
功能创建了蛋白质突变网络 networkD3
.它将在RStudio的"Viewer"窗格中呈现.
然后我可以将其保存为HTML文件,用于共享,保留动态特性(如点击节点,突出显示连接等).
这是我原始数据中前20%的代表,完整的数据看起来更加庞大和复杂.
我需要能够向此forceNetwork添加搜索,以便特定节点可以位于复杂的网络中.通过编辑软件包networkD3和重新打包的副本,可以轻松实现javascript或jquery部分.但我的主要挑战是添加html代码以包含搜索框.
我的主要R代码如下所示:
library(networkD3)
library(XLConnect)
wb <- loadWorkbook("input.xlsx")
nodes <- readWorksheet(wb, sheet="Node", startRow = 1, startCol = 1, header = TRUE)
links <- readWorksheet(wb, sheet="Edges", startRow = 1, startCol = 1, header = TRUE)
fn <- forceNetwork(Links = links, Nodes = nodes,
Source = "Source", Target = "ID", Value = "Combo",
NodeID = "Mutation", linkDistance = JS('function(d){return d.value * 50;}'),
Nodesize = "IF", Group = "Combo", radiusCalculation = JS("d.nodesize+6"),
zoom = T, bounded …
Run Code Online (Sandbox Code Playgroud) 我们已经创建了 sankey 图来通过networkD3::sankeyNetwork()
R显示不同城市之间的流量。我们已经收到客户要求在 sankey 节点的工具提示/悬停上显示与城市对应的“状态”名称。
在以下代码中,我们希望在节点的工具提示(悬停)上显示状态值
library(shiny)
library(networkD3)
library(shinydashboard)
value <- c(12,21,41,12,81)
source <- c(4,1,5,2,1)
target <- c(0,0,1,3,3)
edges2 <- data.frame(cbind(value,source,target))
names(edges2) <- c("value","source","target")
indx <- c(0,1,2,3,4,5)
ID <- c('CITY1','CITY2','CITY3','CITY4','CITY5','CITY6')
State <- c( 'IL','CA','FL','NW','GL','TX')
nodes <-data.frame(cbind(ID,indx,State))
ui <- dashboardPage(
dashboardHeader(
),
dashboardSidebar(disable = TRUE),
dashboardBody(
fluidPage(
sankeyNetworkOutput("simple")
)
)
)
server <- function(input, output,session) {
output$simple <- renderSankeyNetwork({
sankeyNetwork(Links = edges2, Nodes = nodes,
Source = "source", Target = "target",
Value = "value", NodeID = "ID"
,units = …
Run Code Online (Sandbox Code Playgroud) 我希望在 R Markdown 中使用 HTML 小部件/Javascript 创建交互式桑基图,因此我正在考虑使用networkD3 包。我希望利用的主要交互性是单击节点,以使从节点发出的路径向用户突出显示。
我之前使用Riverplot 包创建了静态桑基图,您可以在其中指定每列节点的相对位置以及该列中节点的顺序。
回到networkD3
产品,我不确定是否可以以相同、简单的方式控制相对节点位置(垂直和水平)。我发现了一些似乎与我的要求相关的帖子,但我不清楚哪些(如果有)已经在包中实现,以及“愿望清单”上有哪些
所以,我的问题是是否有人可以就最好的 R 包或技术提供建议,以便创建一个基于交互式 HTML 小部件的桑基图,并具有初始(相对)节点位置控制?
背景
我正在尝试创建一个如下图所示的桑基图。实际上,我想获得一个输出,其中值(10、20、30、40)将在路径(从一个节点到另一个节点)中设置。
我怎么尝试的?
首先,我尝试使用Python的Plotly库。然而,我在某处发现无法在 Plotly(Python)中设置桑基图的链接或路径中的值。后来,我转向了 R(也出于其他一些原因),那里有更多可用的资源(我认为)。然而,在这里,我也面临着同样的问题。我已经检查了SO的许多教程(例如,这个),Q&A(例如,1,2,3 ),它们位于. 尽管如此,我仍然找不到在路径中显示值的教程或资源!R
我的问题
如何在 R 中显示 Sankey Graph 的链接/路径上的值?
注意:这个和SO的这个问题似乎很相似。但是,我无法理解如何将它们合并到我的代码中。
示例代码(从这里收集)
# install.packages('networkD3')
library(networkD3)
nodes = data.frame("name" =
c("Node A", # Node 0
"Node B", # Node 1
"Node C", # Node 2
"Node D"))# 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 …
Run Code Online (Sandbox Code Playgroud) 下午好,从下面的代码我可以生成一个图表,但它不显示基础值。我试图调整这个线程中的代码,但我没有得到任何乐趣。我从来没有用过Java。
我需要的是一个图表,其中还包含每个节点下的值和百分比,如下图所示。
谢谢
library(dplyr)
library(networkD3)
library(tidyverse)
library(readxl)
library(RColorBrewer)
df = data.frame(Source = c("ABC","CDE","MNB","PCI","UCD"),
Destination = c("Me","You","Him","Her","Her"),
Value = c(200,350,456,450,100))
## Reshape dataframe to long
df2 = pivot_longer(df, c(Destination, Source))
## make unique list for destination and source
dest = unique(as.character(df$Destination))
sources = unique(as.character(df$Source))
## Assign nodes number to each element of the chart
nodes2 = data.frame(node = append(dest,sources), nodeid = c(0:8))
res = merge(df,nodes2, by.x="Source", by.y = "node")
res = merge(res,nodes2, by.x="Destination", by.y = "node")
## Make links …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 R 中使用data.tree
andNetworkD3
创建文件系统的树表示,其中图形的节点按文件大小加权。
library(data.tree)
library(networkD3)
repo <- Node$new("Repository")
git <- repo$AddChild(".git")
prod <- repo$AddChild("Production")
exp <- repo$AddChild("Experimental")
repo$size <- 866000
git$size <- 661000
prod$size <- 153000
exp$size <- 48000
Run Code Online (Sandbox Code Playgroud)
我可以使用 Get 获得这些大小的向量,这样
sizes <- repo$Get("size")
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将它们放在一起时,我不确定如何在网络可视化步骤中包含此权重信息。尝试做这样的事情......
reponet <- ToDataFrameNetwork(repo,"repo")
net <- forceNetwork(reponet, Nodesize = repo$Get("size"))
Run Code Online (Sandbox Code Playgroud)
无济于事。基本上我正在尝试做 Julia Silge 在这篇很棒的SO 博客文章中所做的事情。有谁知道如何设置这个?
我使用了以下 R 代码,并得到了下图。但我想将节点的颜色从绿色更改为黑色。我尽力寻找相关的方法或参数,但没有找到。
library(networkD3)
source <- c(0,1,3,4,4)
target <- c(2,2,1,1,0)
value <- c(33,44,66,77,88)
link_group <- as.character(c('a', 'b', 'c', 'd', 'e'))
sankeydata <- data.frame(source,target, value, link_group)
sankeydata
names <- c('a', 'b', 'c', 'd', 'e')
id <- c(0,1,2,3,4)
group <- as.character(c(1,1,1,1,1))
sankeyNodes <- data.frame(names,id,group)
sankeyNetwork(Links = sankeydata, Nodes = sankeyNodes, Source = "source", colourScale = JS(
'd3.scaleOrdinal()
.domain(["a","b","c","d","e"])
.range(["#B3E2CD","#FDCDAC","#CBD5E8","#F4CAE4","#E6F5C9"])'),
Target = "target", Value = "value", NodeID = "names", LinkGroup = "link_group", units = "Quads",
NodeGroup = "group", fontSize = 15, nodeWidth = …
Run Code Online (Sandbox Code Playgroud) 当我在 rmarkdown 中写报告时,我所有的数字都自动保存在文件夹下graphs
。但是,由于 Sankey 图不同,它不会自动保存为图片(.png 等...)。有解决方法吗?(没有通过 RStudio Plots 面板手动保存每个图表?)
我之前看到过这个问题。但是来自的选项rbokeh
会产生低质量的图形。我尝试使用第二个选项,但是代码中似乎有错误,因为函数抛出object 'vl' not found
.
由于这个问题是三年前的问题,我认为目前可能有更好的解决方案。
我要保存的示例图形:
---
title: "Untitled"
author: "Guilherme"
date: "12/5/2020"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE,
fig.path = "graph/")
```
```{r}
library(networkD3)
URL <- paste0('https://cdn.rawgit.com/christophergandrud/networkD3/',
'master/JSONdata/energy.json')
energy <- jsonlite::fromJSON(URL)
# Plot
sankeyNetwork(Links = energy$links, Nodes = energy$nodes, Source = 'source',
Target = 'target', Value = 'value', NodeID = 'name',
units = 'TWh', fontSize = 12, nodeWidth = …
Run Code Online (Sandbox Code Playgroud) networkd3 ×10
r ×10
d3.js ×2
htmlwidgets ×2
javascript ×2
r-markdown ×2
html ×1
plot ×1
rhtml ×1
rstudio ×1
shiny ×1
sna ×1
tree ×1