标签: visnetwork

带有R的igraph/visNetwork:如何禁用前向链接?

以下代码生成一个很好的网络图:

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

set.seed(123)
nnodes <- 10
nnedges <- 20

nodes <- data.frame(id = 1:nnodes)
edges <- data.frame(from = sample(1:nnodes, nnedges, replace = T),
                    to = sample(1:nnodes, nnedges, replace = T))

visNetwork(nodes, edges) %>%
  visIgraphLayout(layout = "layout_in_circle") %>%
  visNodes(shape="circle") %>% 
  visOptions(highlightNearest = list(enabled = T, hover = T), nodesIdSelection = T)
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何禁用从相邻节点离开的边缘(例如,当选择节点8时,我不希望显示从3到9的边缘).

编辑:添加了库,thx for poining that out

在此输入图像描述 在此输入图像描述

r igraph visnetwork

10
推荐指数
1
解决办法
242
查看次数

如何基于R中的visNetwork的一组边创建第二个下拉列表?

在精神上类似于边缘组和在R中的visNetwork中选择,我想知道如何基于边缘而不是使用visNetwork包的节点创建下拉列表.我认为这是可能的visSetSelection功能,但这需要使用闪亮.我用降价渲染的html提供最终产品,而不是从服务器部署它,所以我不认为这是可能的.

有没有办法在闪亮之外复制这个功能?我不完全理解文档中的术语,但我认为我想要做的是类似于函数中nodeIdSelectionselectedBy参数visOptions,你可以创建一个"HTML选择元素",但是基于边缘列表而不是节点列表.

这个特定问题的数据集是专有的,但这里有一些虚拟数据.我希望能够通过边缘的"重量"进行选择.

   library(tidyverse)
    library(visNetwork)

    nodes <- tibble(id = 1:30)
    edges <- tibble(from = c(21:30, 1:20),
                    to = c(5:20, 21:30, 1:4),
                    weight = c(rep(1:5, 6)))

    visNetwork(nodes, edges) %>%
      visIgraphLayout(layout = "layout_in_circle") %>%
      visOptions(highlightNearest = list(enabled = T, 
                                         hover = T, 
                                         degree = 1, 
                                         algorithm = "hierarchical"), 
                                    nodesIdSelection = T)
Run Code Online (Sandbox Code Playgroud)

我所期待的是一个edgesIdSelection争论,visOptions但这不是一个选择.我认为管道visSelectEdges可以工作,但只适用于闪亮,我的客户端无法访问闪亮的服务器.我知道这个库是为了让javascript库可以通过R访问所以我不希望完整的功能 - 如果我不能在R中使用这个包(没有闪亮),我完全明白了.

javascript r visnetwork

8
推荐指数
0
解决办法
280
查看次数

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

visNetwork with R:如何防止节点与边重叠

我正在使用 visNetwork(用于其动态可视化)来可视化具有 47 个节点的二部图。

visNetwork(nodes, edges) %>%
     visIgraphLayout(layout = 'layout.davidson.harel')
Run Code Online (Sandbox Code Playgroud)

它是这样出来的。

上图是目前的样子,这是我们在尝试了一些布局(Fruchterman Reingold 等)后能想到的最好的结果。我遇到的问题是边往往很长,所以一些节点对相距很远。任何人都可以建议一种防止节点与边缘重叠的布局吗?

r visnetwork

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

Visnetwork饼图节点

如何用饼图替换 visnetwork 渲染图中的顶点形状?我知道 igraph 可以通过绘图函数和顶点形状饼来实现这一点http://igraph.org/r/doc/vertex.shape.pie.html。visnetwork 中的等价物是什么?

graph pie-chart visnetwork

6
推荐指数
0
解决办法
354
查看次数

R visNetwork:如何将标签设置为粗体并增加标签周围的边距

我使用该包创建了一个网络图visNetwork(抱歉,我对其他语言知之甚少)。

我想要两点(请看左下图)

  1. 使标签加粗。
  2. 增加标签和边框之间的空间。

我可以用 R 来做吗?

任何帮助将不胜感激。下面是示例代码和输出:

library(dplyr); library(visNetwork)

visNetwork(nodes = data_frame(id = 1:3, 
                              label = c("abcdef", "xxx", "y"),
                              shape = "box"),
           edges = data_frame(from = c(1, 1, 2),
                              to = c(2, 3, 3),
                              arrows = "to")) %>% 
  visNodes(font = list(size = 17),
           color = list(background = "aliceblue", border = "darkblue")) %>% 
  visEdges(width = 2) %>% 
  visIgraphLayout(layout = "layout_nicely")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述在此输入图像描述

r visnetwork

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

选择组时如何突出显示最近的节点

当我从下拉列表中选择一组节点时,我希望也突出显示距离最近的一度节点。目前,仅突出显示组中的节点。

我认为程度= 1的highlightNearest会有所帮助,但这似乎只影响选择单个节点的情况,而不影响选择组的情况。

library(visNetwork)
nb <- 10
nodes <- data.frame(
  id = 1:nb, label = paste("Label", 1:nb),
  group = sample(LETTERS[1:3], nb, replace = TRUE), value = 1:nb,
  title = paste0("<p>", 1:nb, "<br>Tooltip !</p>"), stringsAsFactors = FALSE
)

edges <- data.frame(
  from = c(8, 2, 7, 6, 1, 8, 9, 4, 6, 2),
  to = c(3, 7, 2, 7, 9, 1, 5, 3, 2, 9),
  value = rnorm(nb, 10), label = paste("Edge", 1:nb),
  title = paste0("<p>", 1:nb, "<br>Edge Tooltip !</p>")
) …
Run Code Online (Sandbox Code Playgroud)

visualization r visnetwork

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

修复图表上混乱的标题

我制作了以下 25 个网络图(为了简单起见,所有这些图都是复制品 - 实际上,它们都会有所不同):

library(tidyverse)
library(igraph)


set.seed(123)
n=15
data = data.frame(tibble(d = paste(1:n)))

relations = data.frame(tibble(
  from = sample(data$d),
  to = lead(from, default=from[1]),
))

data$name = c("new york", "chicago", "los angeles", "orlando", "houston", "seattle", "washington", "baltimore", "atlanta", "las vegas", "oakland", "phoenix", "kansas", "miami", "newark" )

graph = graph_from_data_frame(relations, directed=T, vertices = data) 

V(graph)$color <- ifelse(data$d == relations$from[1], "red", "orange")

plot(graph, layout=layout.circle, edge.arrow.size = 0.2, main = "my_graph")

library(visNetwork)

    a = visIgraph(graph)  

m_1 = 1
m_2 = 23.6

 a = …
Run Code Online (Sandbox Code Playgroud)

r data-visualization igraph visnetwork

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

将 yEd 创建的 graphML 文件读入 R

我有这个graphML文件,它是用 yworks yEd 创建的。

在此处输入图片说明

现在我想将此文件读入 R 以通过visNetwork. 但是使用该igraph::read_graph函数将文件读入 R失败:

library(igraph)
example <- igraph::read_graph("data/graphml_example.graphml", format = "graphml")
Run Code Online (Sandbox Code Playgroud)

警告信息:

1:在 read.graph.graphml(file, ...) 中:在 foreign-graphml.c:651 中:由于缺少或未知的“attr.type”属性而忽略

...

这是graphml文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--Created by yFiles for HTML 2.0.1.4-->
<graphml xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml.html/2.0/ygraphml.xsd " xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:demostyle="http://www.yworks.com/yFilesHTML/demos/FlatDemoStyle/1.0" xmlns:bpmn="http://www.yworks.com/xml/yfiles-for-html/bpmn/2.0" xmlns:demotablestyle="http://www.yworks.com/yFilesHTML/demos/FlatDemoTableStyle/1.0" xmlns:compat="http://www.yworks.com/xml/yfiles-compat-arrows/1.0" xmlns:VuejsNodeStyle="http://www.yworks.com/demos/yfiles-vuejs-node-style/1.0" xmlns:y="http://www.yworks.com/xml/yfiles-common/3.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/3.0" xmlns:yjs="http://www.yworks.com/xml/yfiles-for-html/2.0/xaml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <key id="d0" for="node" attr.type="boolean" attr.name="Expanded" y:attr.uri="http://www.yworks.com/xml/yfiles-common/2.0/folding/Expanded">
        <default>true</default>
    </key>
    <key id="d1" for="node" attr.name="NodeLabels" y:attr.uri="http://www.yworks.com/xml/yfiles-common/2.0/NodeLabels"/>
    <key id="d2" for="node" attr.name="NodeGeometry" y:attr.uri="http://www.yworks.com/xml/yfiles-common/2.0/NodeGeometry"/>
    <key id="d3" for="all" attr.name="UserTags" y:attr.uri="http://www.yworks.com/xml/yfiles-common/2.0/UserTags"/>
    <key id="d4" …
Run Code Online (Sandbox Code Playgroud)

r graphml igraph visnetwork

5
推荐指数
0
解决办法
560
查看次数

useRef 当前仅在第二次更新时获取其值

我有以下组件:

const ParentComponent: React.FC = () => {
    const networkRef: any = useRef();

    // Somewhere in the code, I call this
    networkRef.current.filter(["id0, id1, id2"]);

    return (
    ...
        <VisNetwork 
            ref={networkRef}
        />
    ...
    )
}
export default ParentComponent;

interface Props {
    ref: any;
}
const VisNetwork: React.FC<Props> = forwardRef((props: Props, ref) => {
    useImperativeHandle(ref, () => ({
        filter(items: any) {
            setFilterNodes(items);
            nView.refresh();
        }
    }));

    const [filterNodes, setFilterNodes] = useState<any[]>([]);
    const filterNodesRef = useRef(filterNodes);
    useEffect(() => {
        filterNodesRef.current = filterNodes;
    }, [filterNodes]);

    ... …
Run Code Online (Sandbox Code Playgroud)

javascript typescript reactjs visnetwork

5
推荐指数
1
解决办法
1997
查看次数