标签: subgraph

Graphviz:如何旋转节点(或子图)?

我想要一个节点(或一个子图,包围一个节点 - 无论哪个可能/更容易)旋转,如下图所示:

期望的旋转节点效果

(请注意,如果旋转"B"标签对我来说无关紧要 - 只有记录中的 'verti-*' 文本[或者更确切地说,整个记录节点]如图所示旋转)

 

但是,我最接近的是以下dot代码:

digraph graphname {
    node [fontname=Monospace, fontsize=14]; 
    subgraph clusterMasterBox {
        node [shape=record];
        l1 [label = "{ horiz-1 \r| \
 horiz-2 \r| \
 horiz-3 \r| \
 horiz-4 \r} \
"];
        subgraph clusterSubRotateBox {
            rotate=90;
            node [shape=record,rotate=90];
            l2 [label = "{ verti-1 \r| \
 verti-2 \r| \
 verti-3 \r| \
 verti-4 \r} \
"];     
            label="B";
        }
    label="A"
    }
}
Run Code Online (Sandbox Code Playgroud)

我有subgraph clusterSubRotateBox那里的唯一原因(以及它嵌套在里面的唯一原因clusterMasterBox),是因为我希望我可以为它分配旋转,但显然我不能 - 因为上面的代码生成了这个图像:

gviz旋转实际

所以我的问题是 - …

rotation graphviz subgraph

5
推荐指数
3
解决办法
7365
查看次数

在neo4j中提取子图

我有一个存储在Neo4j中的大型网络.基于特定的根节点,我想提取该节点周围的子图并将其存储在其他地方.所以,我需要的是符合我的过滤条件的节点和边的集合.

Afaik没有开箱即用的解决方案.有一个图形匹配组件可用,但它只适用于完美匹配.Neo4j API本身只定义了图遍历,我可以用它来定义应该访问哪些节点/边:

Traverser exp = Traversal
    .description()
    .breadthFirst()
    .evaluator(Evaluators.toDepth(2))
    .traverse(root);
Run Code Online (Sandbox Code Playgroud)

现在,我可以将所有节点/边添加到所有路径的集合中,但这是非常低效的.你会怎么做?谢谢!

编辑将每个遍历的最后一个节点和最后一个关系添加到子图中是否有意义?

subgraph neo4j

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

使用 networkx 生成有向图的生成树

我在 networkx 中有一个有向图 G,我想得到它的最小生成树。我愿意:

 T = nx.algorithms.minimum_spanning_tree( G.to_undirected()  )
Run Code Online (Sandbox Code Playgroud)

这是无方向的,我想恢复方向,但我不知道该怎么做。我试过:

G[T.edges()]
Run Code Online (Sandbox Code Playgroud)

最后一行看起来非常pythonic,但这不是networkx的工作方式,显然......有谁知道怎么做?

换句话说:在给定(无向)边的情况下,如何获得有向树的子图?

python graph subgraph minimum-spanning-tree networkx

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

在 R 中使用 igraph 创建子图

我需要使用 igraph 从图 (g) 中获取种子节点的子图(节点的输入列表;file.txt)及其第一个交互器(邻居)。不幸的是,我最终在子图中只有一个节点,而不是所有其余的节点和连接它们的边(顶点)。

g<-read.graph("DATABASE.ncol",format="ncol",directed=FALSE) #load the data
g2<-simplify(g, remove.multiple=TRUE, remove.loops=TRUE) # Remove the self-loops in the data
DAT1 <- readLines("file.txt")   #It provides a character vector right away
list_nodes_1 = neighbors(g2, DAT1) #list of nodes to be fetched in subnetwork
list_nodes_1 # 16
g3 <- induced.subgraph(graph=g2,vids=DAT1) #subnetwork construction
g3 # GRAPH UN-- 1 0 --; indicating only one node
plot (g3)
Run Code Online (Sandbox Code Playgroud)

获取整个子网(包括节点和顶点)的任何建议?或者是否有任何其他功能可用于创建子图?

数据库.ncol:

MAP2K4  FLNC
MYPN    ACTN2
ACVR1   FNTA
GATA2   PML
RPA2    STAT3
ARF1    GGA3
ARF3    ARFIP2
ARF3    ARFIP1 …
Run Code Online (Sandbox Code Playgroud)

r subgraph igraph

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

Graphviz水平对齐子图

我有以下代码:

    digraph G {
        bgcolor=antiquewhite;
        compound=true;
        { 
            rankdir=LR ; 
            rank=same g0 p1 p2 p3 h1; 
        }
        subgraph cluster0 {
            style=filled;
            color=khaki;
            g0 [label="G",shape=circle,style="filled", color="red", fillcolor="lightpink"]
            label = "Cluster 0";
            g0 -> p1;
        }
        subgraph cluster1 {
            style=filled;
            color=khaki;
            p1 [label="S2",shape=box,style="filled", color="blue", fillcolor="skyblue"];
            p2 [label="S3",shape=box,style="filled", color="blue", fillcolor="skyblue"];
            p3 [label="S3",shape=box,style="filled", color="blue", fillcolor="skyblue"];
            label = "Cluster 1";
            p1 -> p2 -> p3 [arrowhead=none] ;
        }
        subgraph cluster2 {
            style=filled;
            color=khaki;
            h1 [label="h1",shape=box,style="invis"];
            label = "Cluster 2";
            p3 -> h1; 
        }
    }
Run Code Online (Sandbox Code Playgroud)

除了子图不显示外,一切都完美无缺。一旦在集群外定义了等级,子图就会消失。

在此处输入图片说明

如果在簇体内部定义,则簇之间的相同等级将丢失。

alignment graphviz subgraph rank

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

NetworkX DiGraph按节点创建子图(DiGraph)

我想按节点获取一个子图(红色区域):子图由从输入节点可到达的所有节点组成。

像G.subgraph(3)从红色区域返回一个新的DiGraph。

在此处输入图片说明

例如,我创建一个DiGraph如下:

import networkx as nx
G = nx.DiGraph()

G.add_path([1,2,3,4])
G.add_path([3,'a','b'])

A = nx.to_agraph(G)
A.layout()
A.draw('graph.png')
Run Code Online (Sandbox Code Playgroud)

我查看了https://networkx.github.io/documentation/latest/reference/generation/networkx.Graph.subgraph.html并将其转换为单向。我测试了out_egdes,strong / weak_connected_component,但从未成功。我还查看了如何在有向图中查找子图而不转换为无向图?Networkx:提取包含给定节点的有向组件(有向图)

我知道Subgraph在DiGraph中不起作用。

有人可以告诉我该怎么做吗?如果结果图也是DiGraph会很好

python subgraph networkx

5
推荐指数
2
解决办法
1947
查看次数

图形工具:子图形作为新的Graph对象

我发现图形工具文档非常模糊,比其他类似的库更加神秘.

我真的无法弄清楚如何从图形工具中的图形中"提取"组件(也称为连接组件).我想将子图保存在单独的文件中作为单独的图形,但我不明白如何从我的Graph对象开始识别它们.

python subgraph graph-tool

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

GraphViz:如何将节点连接到包含子图

我刚刚在 Stackoverflow 上学习了如何连接节点和子图。但是,我想将一个节点连接到包含的子图:

digraph G {
    compound=true;
    subgraph cluster0 {
        a -> b;
        a -> c;
        c -> {a b c} [lhead=cluster0];
    }
    c -> d;
    d -> {a b c} [lhead=cluster0];
}
Run Code Online (Sandbox Code Playgroud)

快速概述一下我的意思:

在此输入图像描述

我想连接d -> {a b c},但为了清楚起见,我不想绘制三个不同的箭头,而只想绘制一个指向节点分组的箭头。一种方法是仅列出一个箭头,例如d -> a。这可行,但是当头指向一个簇时,有没有办法将三个箭头“折叠”为一个?

但是,c -> {a b c}不可能指向一个簇,因为c是该簇的一部分。有办法解决这个问题吗?

dot graphviz subgraph

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

找到最大权重的子图

我有一个城市区域(让我们将其视为街道图),其中所有街道都有一些与之相关的权重和长度。我想要做的是找到一组连接的街道,位于其他街道附近,具有最大(或接近最大)总权重 W,因为我的最大子图最多只能包含 N 个街道。

我特别对跨越整个图表的子图不感兴趣,而只对一小群具有最大或接近最大组合权重的街道感兴趣,并且所有街道都彼此“靠近”,其中“附近”将定义为距离集群中心不超过 X 米的街道。生成的子图必须连接起来。

有谁知道这个算法的名称是否存在(假设它存在)?

也对任何解决方案感兴趣,无论是精确的还是近似的。

为了直观地显示这一点,假设我的图表是下图中的所有街道路段(十字路口到十字路口)。因此,个别街道不是 A 大道,而是 10 号和 11 号之间的 A 大道,依此类推。街道的权重为 1 或 0。假设权重最大的街道集位于选定的多边形中 - 我想要做的是找到该多边形。 街道网络

algorithm graph-theory cluster-analysis subgraph graph-algorithm

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

有没有简单的例子来解释ullmann算法

我是学习图论的新生.我现在正在学习(子)图同构.有两个重要的算法:Ullmann算法vf2.

我读过Ullmann的论文:Subgraph Isomorphism 的算法.我也谷歌搜索它和谷歌给了我很多应用程序,但我无法理解算法的程序.

你能给我一个简单的解释吗?

isomorphism subgraph

4
推荐指数
1
解决办法
5603
查看次数