visNetwork R:指定可变节点背景色和边框色

问题描述

我希望能够改变图表中节点的背景颜色,并使用边框颜色来确保与边相比能够很好地标记出节点。

我认为以下应该有效,但它没有:

nodes <- data.frame(id = 1:3,color = c("lightblue","red","blue"))
edges <- data.frame(from = c(1,2),to = c(1,3))
visNetwork(nodes,edges) %>% visNodes(color = list(border = "black"))

结果网络

enter image description here

我尝试直接向 visNodes 提供颜色向量,但失败了。事实上,颜色是从 data.frame 列颜色中保留的

visNetwork(nodes,edges) %>% visNodes(color = list(background = c("yellow","pink","blue"),border = "black"))

结果网络

enter image description here

visNetwork 是一个很棒的包,但在 StackOverflow 上查询不足。

在征得适当许可后,我代表 Charlie from GitHub 在此处发布此内容,主要是为了在 StackOverflow 上提供此内容,供其他 R 可视化爱好者在此处获得答案。

我不得不发布图片的超链接,因为我是 StackOverflow 的新手,并带有个人资料(作为分析顾问使用它多年,但没想过创建个人资料,不知道它的用途)并且在收集 10 个声望点之前不允许发布图片

解决方法

这个案例很有趣。首先,我们可以将单独的选项传递给节点/边 data.frame,并使用 visNodes 和 visEdges 将全局选项传递给所有节点/边。

所以你不能这样做:

visNetwork(nodes,edges) %>% visNodes(color = list(background = c("yellow","pink","blue"),border = "black"))

但只需用这种方式指定一种背景和边框颜色:

visNetwork(nodes,edges) %>% visNodes(color = list(background = "blue",border = "black"))

color 可以是具有一个值的简单选项,也可以是更复杂的定义。在您的第一个示例中,data.frame 中 color 的定义似乎覆盖了 visNodes 选项。

从 0.2.1 开始,您现在可以像这样直接在 data.frame 中传递复杂的选项(列表):

nodes <- data.frame(id = 1:3,color.background = c("lightblue","red",color.border = "black")
edges <- data.frame(from = c(1,2),to = c(1,3))
visNetwork(nodes,edges)

等等:

nodes <- data.frame(id = 1:3,"blue"))
edges <- data.frame(from = c(1,edges) %>% visNodes(color = list(border = "black"))

PS:我自己发布了一个答案,因为这个对话已经在 GitHub 问题上可用了。只是想在这里记录它以方便社区。​​p>