R visNetwork:创建新型边缘
R visNetwork: create new type of edges
我想用 visNetwork 为我闪亮的应用程序创建一个 PAG(父母祖先图)。
为此,我必须创建同时具有圆圈和箭头的边。
根据 visNetwork 包,我可以像这样将箭头转换为圆圈
visNetwork(nodes, edges) %>%
visEdges(arrows = list(to = list(enabled = TRUE,
scaleFactor = 2, type = 'circle')))
但是我想要一个箭头和一个圆圈,或者像这张照片一样在一个边上有两个圆圈
PAG
arrows.from.type 和 arrows.to.type 似乎可以正常工作,但我现在遇到了这个问题。
我想根据邻接矩阵绘制这个图
所以我有这个代码
i = 1
j = 1
for(i in i:ncol(results))
{
j = i
for(j in j:nrow(results))
{
if(results[j,i]==1)
{
dashBoard = c(dashBoard,TRUE)
colorBoard = c(colorBoard, "green")
if(results[i,j]==1)
{
fromtest <- c(fromtest,Cnames[i])
totest <- c(totest,Rnames[j])
arrfrom <-c(arrfrom,"circle")
arrto<-c(arrto,"circle")
}
else if(results[i,j]==2)
{
fromtest<-c(fromtest,Cnames[i])
totest<-c(totest,Rnames[j])
arrfrom <-c(arrfrom,"circle")
arrto<-c(arrto,"arrow")
}}
除 1,1 和 1,2 之外的所有可能的组合都是如此
最后边缘打印成那样
edgesprint <-data.frame(from = fromtest,
to = totest,
arrows.from.type=arrfrom,
arrows.to.type=arrto,
dashes = dashBoard,
physics = FALSE,
smooth = FALSE,
width = 3,
shadow = TRUE,
color = list(color = colorBoard, highlight = "red", hover = "green"),
links = links)
此方法效果很好,但有时不更改任何代码我会收到此错误
data.frame 参数中的错误暗示行数不同
您可以通过添加列 arrows.to.type
和 arrows.from.type
:
在 edges
数据框中设置单独的箭头类型
library(visNetwork)
library(magrittr)
nodes <- data.frame(id=c("a","b","c","d"), label=c("a","b","c","d"))
edges <- data.frame(
from = c("a","a","a"),
to = c("b","c","d"),
arrows.from.type = c(NA,"circle","circle"),
arrows.to.type = c("arrow","circle",NA)
)
visNetwork(nodes, edges)
结果:
此方法适用于您可以通过 visNodes
和 visEdges
设置的所有其他属性。有关示例,请参阅 here。
我想用 visNetwork 为我闪亮的应用程序创建一个 PAG(父母祖先图)。 为此,我必须创建同时具有圆圈和箭头的边。 根据 visNetwork 包,我可以像这样将箭头转换为圆圈
visNetwork(nodes, edges) %>%
visEdges(arrows = list(to = list(enabled = TRUE,
scaleFactor = 2, type = 'circle')))
但是我想要一个箭头和一个圆圈,或者像这张照片一样在一个边上有两个圆圈 PAG
arrows.from.type 和 arrows.to.type 似乎可以正常工作,但我现在遇到了这个问题。 我想根据邻接矩阵绘制这个图 所以我有这个代码
i = 1
j = 1
for(i in i:ncol(results))
{
j = i
for(j in j:nrow(results))
{
if(results[j,i]==1)
{
dashBoard = c(dashBoard,TRUE)
colorBoard = c(colorBoard, "green")
if(results[i,j]==1)
{
fromtest <- c(fromtest,Cnames[i])
totest <- c(totest,Rnames[j])
arrfrom <-c(arrfrom,"circle")
arrto<-c(arrto,"circle")
}
else if(results[i,j]==2)
{
fromtest<-c(fromtest,Cnames[i])
totest<-c(totest,Rnames[j])
arrfrom <-c(arrfrom,"circle")
arrto<-c(arrto,"arrow")
}}
除 1,1 和 1,2 之外的所有可能的组合都是如此 最后边缘打印成那样
edgesprint <-data.frame(from = fromtest,
to = totest,
arrows.from.type=arrfrom,
arrows.to.type=arrto,
dashes = dashBoard,
physics = FALSE,
smooth = FALSE,
width = 3,
shadow = TRUE,
color = list(color = colorBoard, highlight = "red", hover = "green"),
links = links)
此方法效果很好,但有时不更改任何代码我会收到此错误
data.frame 参数中的错误暗示行数不同
您可以通过添加列 arrows.to.type
和 arrows.from.type
:
edges
数据框中设置单独的箭头类型
library(visNetwork)
library(magrittr)
nodes <- data.frame(id=c("a","b","c","d"), label=c("a","b","c","d"))
edges <- data.frame(
from = c("a","a","a"),
to = c("b","c","d"),
arrows.from.type = c(NA,"circle","circle"),
arrows.to.type = c("arrow","circle",NA)
)
visNetwork(nodes, edges)
结果:
此方法适用于您可以通过 visNodes
和 visEdges
设置的所有其他属性。有关示例,请参阅 here。