我在R中创建了一个Sankey图,使用该networkD3包,我想将其保存为静态图像,使用代码而不是单击"导出" - >"另存为图像...".
我尝试的当前代码(使用此 Sankey图作为示例)是:
library(networkD3)
URL <- paste0(
"https://cdn.rawgit.com/christophergandrud/networkD3/",
"master/JSONdata/energy.json")
Energy <- jsonlite::fromJSON(URL)
# Plot
jpeg( filename = "Sankey.jpg", width = 4000, height = 4000)
sankeyNetwork(Links = Energy$links, Nodes = Energy$nodes, Source = "source",
Target = "target", Value = "value", NodeID = "name",
units = "TWh", fontSize = 12, nodeWidth = 30)
dev.off()
Run Code Online (Sandbox Code Playgroud)
虽然我打开图像时所有的空白框都是空白的.
我曾尝试使用 ggalluvial 和 networkd3 包创建桑基图,但未能成功。理想情况下,我想了解如何在两者中获得我想做的事情。
数据生成如下:
dat <- data.frame(customer = c(rep(c(1, 2), each=3), 3, 3),
holiday_loc = c("SA", "SA", "AB", "SA", "SA", "SA", "AB", "AB"),
holiday_num = c(1, 2, 3, 1, 2, 3, 1, 2))
dat_wide <- dat %>%
spread(key=holiday_num, value=holiday_loc`)
Run Code Online (Sandbox Code Playgroud)
不确定 dat 还是 dat_wide 更合适?我希望输出可视化以下信息(括号中的数字是频率,因此是流量的宽度)
SA -(2) - SA - (1) - AB
Run Code Online (Sandbox Code Playgroud)- (1) - SAAB -(1) - AB
我按照这个链接上的说明使用 networkd3 为 R 中的离散状态序列networkd3 Sankey 图,但是我最终在图中找到了循环。
下图显示了我想要的类似图表:[![Sankey 图表取自 SAS VA][2]][2]
建议和帮助将不胜感激...
谢谢!
[2]:https …
我有这个代码:
library(networkD3)
# Load data
data(MisLinks)
data(MisNodes)
new.nodes <- MisNodes
new.nodes$var1 <- runif(nrow(MisNodes),1,2)
new.nodes$var2 <- runif(nrow(MisNodes),1,2)
# Some script to show the node index in the new.nodes data frame
script <- 'alert("row: " + (d.index + 1));'
# Plot
forceNetwork(Links = MisLinks, Nodes = new.nodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
Group = "group", opacity = 0.8,
clickAction = script)
Run Code Online (Sandbox Code Playgroud)
我想通了通过询问来获取节点数据帧的行号d.index + 1。但是我想显示一个包含所有节点信息的表,如下所示(也许格式更好):
name group size var1 var2
1 Myriel 1 15 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在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.frames:
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) networkd3包包含一些非常好的函数来创建明显的网络。不同的函数有不同的参数,因此这个问题专门针对 RadialNetwork() 函数。是否可以根据给定的向量改变节点笔划的颜色?
下面的代码创建了一个网络图,但将节点描边的参数更改为包含不同颜色的向量不起作用。
library(networkD3)
library(tidyverse)
library(data.tree)
## Data
input <- list(number=50)
Data_tree <- data.frame(Start="Class",
Asset = sample(c("FI","Equity","Currency","Commodities"),input$number,replace = TRUE),
Sub_Asset = sample(c("Asia","Europe","USA","Africa","ME"),input$number,replace = TRUE),
Ticker = replicate(input$number,paste0(sample(LETTERS,3),collapse=""))) %>%
unite(col="pathString",Start,Asset,Sub_Asset,Ticker,sep="-",remove=FALSE) %>%
select(-Start) %>% as.Node(pathDelimiter = "-")
radialNetwork(ToListExplicit(Data_tree, unname = TRUE ),
linkColour = "#ccc",
nodeColour = "#fff",
nodeStroke = "orange",
textColour = "#cccccc")
Run Code Online (Sandbox Code Playgroud)
我希望在 R Markdown 中使用 HTML 小部件/Javascript 创建交互式桑基图,因此我正在考虑使用networkD3 包。我希望利用的主要交互性是单击节点,以使从节点发出的路径向用户突出显示。
我之前使用Riverplot 包创建了静态桑基图,您可以在其中指定每列节点的相对位置以及该列中节点的顺序。
回到networkD3产品,我不确定是否可以以相同、简单的方式控制相对节点位置(垂直和水平)。我发现了一些似乎与我的要求相关的帖子,但我不清楚哪些(如果有)已经在包中实现,以及“愿望清单”上有哪些
所以,我的问题是是否有人可以就最好的 R 包或技术提供建议,以便创建一个基于交互式 HTML 小部件的桑基图,并具有初始(相对)节点位置控制?
我正在制作一个 Sankey 图表,我想在每列的顶部添加文本,以便简要说明所显示的内容。来自 r-graph galery 的示例代码:
library(networkD3)
# A connection data frame is a list of flows with intensity for each flow
links <- data.frame(
source=c("group_A","group_A", "group_B", "group_C", "group_C", "group_E"),
target=c("group_C","group_D", "group_E", "group_F", "group_G", "group_H"),
value=c(2,3, 2, 3, 1, 3)
)
# From these flows we need to create a node data frame: it lists every entities involved in the flow
nodes <- data.frame(
name = unique(c(as.character(links$source), as.character(links$target)))
)
# With networkD3, connection must be provided using id, not using …Run Code Online (Sandbox Code Playgroud) 背景
我正在尝试创建一个如下图所示的桑基图。实际上,我想获得一个输出,其中值(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) 如果您事先知道哪些列可用,则以下代码可以重新排列列,但是如果想要按降序/升序重新排列列怎么办?StackOverflow 上有一些类似的帖子,但没有一个可以在不知道哪些列可用的情况下做到这一点。
type value
1 rna 1
2 rna 2
3 rna 3
4 dna 20
5 dna 30
d<- data.frame (type=c("rna","rna","rna"), value = c(1,2,3) )
d2 <- data.frame (type=c("dna","dna"), value = c(20,30) )
df <- rbind (d,d2)
library(dplyr)
df %>%
group_by(type) %>%
summarise_all(sum) %>%
data.frame() %>%
arrange(desc(value)) %>% # reorder row
select_(.dots = c("value","type") ) # reorder column
Run Code Online (Sandbox Code Playgroud) r ×10
networkd3 ×9
htmlwidgets ×5
d3.js ×3
javascript ×2
dplyr ×1
networking ×1
plot ×1
r-markdown ×1
rstudio ×1
sna ×1
tidyverse ×1