标签: subgraph

GraphViz强制列

我有以下点:

digraph G
{
    rank="same";
    subgraph sys
    {
        1 [shape=record, label="| | Système"];
    }

    subgraph obj
    {
        2 [shape=box, label="Sites"];
        3 [shape=box, label="Sociétés de\nmaintenance"];
        1 -> 2 [arrowhead=none] [label="a"];
        1 -> 3 [arrowhead=none] [label="b"];
    }

    subgraph constraints
    {
        4 [style=dotted, label="Surveiller"];
        5 [style=dotted, label="Effectuer des\ninterventions"];
        4 -> 2 [style=dotted];
        4 -> 3 [style=dotted];
        5 -> 2 [style=dotted];
        5 -> 3 [style=dotted];
    }

}
Run Code Online (Sandbox Code Playgroud)

这给了我这张图片:

在此处输入图片说明

但是我想按列创建一个子图(第一列为1,第二列为2-3,最后列为4-5)。

有没有办法做到这一点?

对于您的帮助,在此先感谢。

graphviz subgraph

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

为什么Graphviz在引入子图时不再最小化边长

我有这个Graphviz图:

digraph
{
   rankdir="LR";
   overlap = true;
   Node[shape=record, height="0.4", width="0.4"];
   Edge[dir=none];

   A B C D E F G H I 

   A -> B -> C
   D -> E -> F
   G -> H -> I

   Edge[constraint=false]

   A -> D -> G

   subgraph clusterX
   {
      A
      B
   }

   subgraph clusterY
   {
      E
      H
      F
      I
   }
}
Run Code Online (Sandbox Code Playgroud)

产生这个输出:

Graphviz输出

我原本期望A和D之间的边缘长度最小化,以便节点排列为:

A B C
D E F
G H I
Run Code Online (Sandbox Code Playgroud)

而不是

D E F
G H I
A B C
Run Code Online (Sandbox Code Playgroud)

如果我删除子图定义,这将按预期工作.

为什么Graphviz在引入子图时将ABC置于底部?

dot graphviz subgraph

3
推荐指数
1
解决办法
2188
查看次数

图中的子图

我有一个主图和另一个小图,假设小图可以在主图中重复为具有相似程度的子图(不一定是相同的小图)什么是一个好的算法(或Java库)来找到它们所有?

algorithm graph subgraph

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

Graphviz:控制节点在子图中对齐

考虑以下子图,包含5个Mrecod节点:

在此输入图像描述

有没有办法强制垂直方向,节点在彼此之上?rankdir=TB在子图中试过,没有效果.

我在Ubuntu下运行graphviz,没有特殊参数:

dot -Tpng graph.dot -o img/graph.png
Run Code Online (Sandbox Code Playgroud)

graphviz subgraph orientation nodes

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

根据节点的属性 NetworkX 将图划分为太阳图

我正在使用 Networkx 来计算图的一些度量,例如直径、聚类系数等。如何对整个图执行此操作很简单。我感兴趣的是在具有相同属性(比如颜色)的节点之间找到这些度量。我在想,如果我可以将图形划分为不同的子图形,其中每个子图形中的节点具有相同的颜色,那么我可以继续测量这个子图形中的直径。所以我的问题是:有没有办法将图划分为包含相同颜色节点的子图?

我真的很感激任何见解。

python subgraph networkx

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

Graphviz 未在子图周围绘制边框

考虑以下 Graphviz 代码:

digraph g1 { 
    compound = true;
    node [shape = box, style=filled, fillcolor=Khaki] a;

    subgraph sg1 {
        node [shape = "", style="", fillcolor=""] b -> c;
        graph [style=solid, penwidth=3];
    }
}
Run Code Online (Sandbox Code Playgroud)

这产生:

在此输入图像描述

为什么我没有得到子图/簇周围的边框?

border graphviz subgraph

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

如何使子图可见?

在下图中,两个子图不可见,但所有节点似乎都是随机放置的。如何创建可见的子图,例如一个盒子里面有我的 PlayerChars,另一个盒子里面有 NonPlayerChars?

digraph "All Characters" { 
  subgraph PlayerChars {
    label = "Player Characters";
    node [style=filled,color=yellow];
    Char1 -> Char2 [ label = "is sister of" ];
    Char1 -> Char2 [ label = "is brother of" ];
    label = "PCs";
  }
  subgraph NonPlayerChars {
    label = "Non-Player Characters";
    Person1 -> Char2 [label="hates"];
    Char2 -> Person1 [label="is indifferent"];
    Person2 -> Char2 [label="stole from"];
    Person1 -> Person2 [label="is father of"];
    Person2 -> Person1 [label="is daughter of"];
    Char1 -> Person2 [label="is in love with"]; …
Run Code Online (Sandbox Code Playgroud)

graphviz subgraph

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

igraph包中的子图错误

我想获得图中所有周期的子图。我尝试了下面的代码

 for (i in 1:length(cycles)){
    vids<-as.numeric(unlist(cycles[[i]]))
    subgraph<- induced.subgraph(graph, vids)
 }
Run Code Online (Sandbox Code Playgroud)

但是它会抛出如下错误:

Error in .Call("R_igraph_induced_subgraph", graph, vids - 1, impl, PACKAGE = "igraph") : 
  At iterators.c:759 : Cannot create iterator, invalid vertex id, Invalid vertex id
Run Code Online (Sandbox Code Playgroud)

我发现该代码可与cycles列表中的第二个元素一起使用,该元素较短,但第一个元素不是。因此,如果我尝试这样做会起作用,

subgraph<- induced.subgraph(g, c(3,4))
Run Code Online (Sandbox Code Playgroud)

但不是

subgraph<- induced.subgraph(g, c(26, 2, 30, 29, 25, 9, 27, 13, 14, 8, 23, 20, 19, 17, 12, 11, 24, 21, 6, 28, 15,3,4))
Run Code Online (Sandbox Code Playgroud)

同样,欢迎提出任何替代for循环的建议。

一个可重现的示例:

    library(igraph)
    graph<-graph(c(1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,
           16,17,17,18,18,19,19,20,20,21,21,1,22,23,23,22),directed=T)
    V(graph)$name<-c(26, 2, 30, 29, 25, 9, 27, 13, 14, 8, …
Run Code Online (Sandbox Code Playgroud)

r subgraph igraph

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

最大加权跨越弱连通DAG的算法

是否存在一种算法来查找跨越DAG的最大权重,该DAG在有向图中弱连接,其中每个切割具有弱连接的集合(从一个集合到另一个集合至少有一个有向路径)?或者这是一个NP难题?关于这个主题的上一个问题没有指定https://mathoverflow.net/questions/31864/algorithms-for-maximum-weighted-spanning-connected-dag-directed-acyclic-graph弱或强连接,所以我想成为更确切.

algorithm graph subgraph directed-acyclic-graphs

0
推荐指数
1
解决办法
1300
查看次数

Graphviz 在子图中渲染节点,为什么?

我想显示一个a指向一个节点的节点bb位于子图中。以下点图可视化代码应该可以工作。

digraph
{
    a;

    subgraph cluster_mysubgraph
    {
        a->b;       
    }
}
Run Code Online (Sandbox Code Playgroud)

唉,虽然节点a是在任何子图之外声明的,但它是在内部渲染的mysubgraph(在 Ubuntu 14.04 上的 graphviz 2.36.0 上观察到):

a 不应该在 b 子图中

我尝试过诸如预声明b之类的变体。没有成功。

解决方法是在另一个集群子图中声明a

digraph
{
    subgraph cluster_pseudo
    {
        a;
    }

    subgraph cluster_mysubgraph
    {
        a->b;       
    }
}
Run Code Online (Sandbox Code Playgroud)

这可以防止a出现在 内部mysubgraph,但另一个子图并不是真正的选择。

解决方法在自己的子图中放置一个,不好

a实际上应该在任何子图之外。

问题

  • 事情应该是这样的吗?
  • 是否有保留预期外观的解决方法?

dot graphviz subgraph

0
推荐指数
1
解决办法
566
查看次数

R中的igraph,如何根据入射顶点属性选择边?

我正在寻找一种基于至少一个入射在该边缘上的顶点的顶点属性得分的子图边缘的方法.

有一个简单的方法吗?

有什么建议?

attributes r subgraph edges igraph

-1
推荐指数
1
解决办法
5474
查看次数