Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Graphviz中划掉节点?_Graphviz - Fatal编程技术网

如何在Graphviz中划掉节点?

如何在Graphviz中划掉节点?,graphviz,Graphviz,我想指出的是,应该有一个节点,但目前在这个过程中还没有。 直观地说,我想划掉它,如下图所示(现在在Paint中手动完成): Graphviz中是否有可用于此操作的节点属性?我找不到可用于执行所需操作的属性或节点形状,但有两种方法: 在Graphviz之外构建一个图像(带有文本和X),并使用图像属性将图像用作节点(是的,如果您想经常这样做,这是一个难题): b[image=“myB.png”] 对于每个X'd out节点,从.ne到.sw和.nw到.se(请参见下文)添加两条新边,每个边都具有

我想指出的是,应该有一个节点,但目前在这个过程中还没有。 直观地说,我想划掉它,如下图所示(现在在Paint中手动完成):


Graphviz中是否有可用于此操作的节点属性?

我找不到可用于执行所需操作的属性或节点形状,但有两种方法:

  • 在Graphviz之外构建一个图像(带有文本和X),并使用图像属性将图像用作节点(是的,如果您想经常这样做,这是一个难题):

    b[image=“myB.png”]

  • 对于每个X'd out节点,从.ne到.sw和.nw到.se(请参见下文)添加两条新边,每个边都具有此(新)属性:直线=1。然后运行以下命令:

  • 如果这是直线。gvpr:

    E[straightline==1]{
      int i, n;
      string pt[int];
      double x1, y1, x2, y2, xI1, yI1, xI2, yI2;
    
      n=split($.pos, pt, " ");
    
      for (i=0;i<=1;i++){
        if (match(pt[i],"e,")>=0){
          print ("//  BEFORE: ", pt[i]);
          pt[n-1]=substr(pt[i],2);
          print ("//  AFTER: ", pt[i]);
          pt[i]=pt[i+1];
        }
      }
      for (i=0;i<=1;i++){
        if (match(pt[i],"s,")>=0){
          pt[0]=substr(pt[i],2);
        }
      }
    
      sscanf (pt[0], "%f,%f", &x1, &y1);
      sscanf (pt[n-1], "%f,%f", &x2, &y2);
      xI1=x1+(x2-x1)*.3;
      yI1=y1+(y2-y1)*.3;
      xI2=x1+(x2-x1)*.7;
      yI2=y1+(y2-y1)*.7;
    
      $.pos=sprintf("%s %.3f,%.3f %.3f,%.3f %s", pt[0], xI1, yI1, xI2, yI2, pt[n-1]);
    }
    
    很抱歉,很复杂,但它可以工作。

    虽然可以提供我所需的确切输出,但需要我了解如何在我的工作流程中引入
    gvpr
    ,这需要一些时间

    与此同时,我提出了一种只使用点的方法,这种方法近似于根据我的目的划掉一个节点

    在下图中,我想划掉节点
    一些进程

    digraph graphname {
        rankdir=LR
        node [fillcolor="lightblue3", style="filled"]
            a
            c
            d
            b [label="Some\nprocess"]
        a -> b -> c
        a -> d -> c
        {rank=same a;d}
    }
    

    为此,我改变了:

    • 某些进程的节点样式
      节点具有硬
    • 使用删除线删除文本
    • fontcolor
      和节点轮廓设为灰色阴影
    有向图图形名称{
    rankdir=LR
    节点[fillcolor=“lightblue3”,style=“filled”]
    A.
    C
    D
    节点[fillcolor=“lightblue3;0.5:白色”,style=“filled”,fontcolor=“gray50”,color=“gray50”,gradientrange=100]
    b[标签=]
    a->b->c
    a->d->c
    {rank=相同的a;d}
    }
    

    我应该提到,常见问题解答中记录了“neato-n2”,gvpr计划正在用从边缘开始到边缘结束的直线代替边缘布线。谢谢,这很有创意。我从来没有研究过gvpr,也许我应该。与此同时,我发现了一个不同的、更轻松的解决方法(将在一分钟后发布)。
    digraph X{
      graph [outputorder=edgefirst]
    
      b [ label="X me"]
      a -> b -> c 
      a -> d
      d -> c
    
      e -> f 
      g -> i -> k
    
      edge [color="#ff000080" penwidth=2]  // note translucent color
      b:ne -> b:sw  [straightline=1]
      b:se -> b:nw  [straightline=1]
    
      edge [color="green" penwidth=2]
      e:n -> e:s  [straightline=1]
      f:w -> f:se [straightline=1]
    
      edge [color="orange" penwidth=2]
      g:n -> g:se [dir=back straightline=1]
      edge [color="blue" penwidth=2]
      g:n -> g:sw [dir=back straightline=1]
      i:e -> i:w [dir=none straightline=1]
      k -> k:s [dir=both straightline=1]
    }
    
    digraph graphname {
        rankdir=LR
        node [fillcolor="lightblue3", style="filled"]
            a
            c
            d
            b [label="Some\nprocess"]
        a -> b -> c
        a -> d -> c
        {rank=same a;d}
    }
    
    digraph graphname {
        rankdir=LR
        node [fillcolor="lightblue3", style="filled"]
            a
            c
            d
        node [fillcolor="lightblue3;0.5:white", style="filled", fontcolor="gray50", color="gray50", gradientangle=100]
            b [label=<<s>Some<br/>process</s>>]
        a -> b -> c
        a -> d -> c
        {rank=same a;d}
    }