如何调整点图中边缘的方向?

发布于 2024-11-09 23:12:10 字数 974 浏览 0 评论 0原文

在提问之前,我尝试搜索我的问题的答案,但我找不到。 我的问题是关于改变点图中的边缘方向。 Rankdir 是“LR”,但在图表的某些部分,我想使用“TB”。让我举个例子。

digraph G {
  rankdir=LR;
  size="7,5";
  browser->ui_thread;
  browser->db_thread;
  browser->webkit_thread;
  browser->cache_thread;
  browser->file_thread;
  browser->io_thread;
  io_thread[style=filled];
  cache_thread[style=filled];
  ui_thread->thread[label=inherit];
  ui_thread->messageloop[style=dotted];
  db_thread->messageloop[style=dotted];
  webkit_thread->messageloop[style=dotted];
  cache_thread->messageloop[style=dotted];
  file_thread->messageloop[style=dotted];
  io_thread->messageloop[style=dotted];
}

它给出这样的图表 output graph

但是,这不是我想要的。 我想要下面的图片。 “thread”垂直位于“ui_thread”上方。 在此处输入图像描述 您可能认为使用“rankdir=same”与“thread”和“ui_thread”可以轻松解决这个问题。 我确实已经尝试过了。但我失败了。 “thread”始终低于“ui_thread”。

谢谢,

Before asking, I tried to search the answer for my question, buf I couldn't find.
My question is about changing edge direction in dot diagram. Rankdir is 'LR', but in certain part of graph, I want to use 'TB'. Let me give an example.

digraph G {
  rankdir=LR;
  size="7,5";
  browser->ui_thread;
  browser->db_thread;
  browser->webkit_thread;
  browser->cache_thread;
  browser->file_thread;
  browser->io_thread;
  io_thread[style=filled];
  cache_thread[style=filled];
  ui_thread->thread[label=inherit];
  ui_thread->messageloop[style=dotted];
  db_thread->messageloop[style=dotted];
  webkit_thread->messageloop[style=dotted];
  cache_thread->messageloop[style=dotted];
  file_thread->messageloop[style=dotted];
  io_thread->messageloop[style=dotted];
}

it gives out graph like this
output graph

But, this is not what I want.
I want the following image. "thread" is above "ui_thread" vertically.
enter image description here
You may think it can be solved easily using "rankdir=same" with "thread" and "ui_thread".
I sure tried this already. but I failed. "thread" is always below "ui_thread".

thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

后eg是否自 2024-11-16 23:12:10

不幸的是,图形方向只能指定一次,并且整个图形保持在该方向。在这种情况下,您通常可以通过结合使用 constraint=false 和不可见边来强制进行某种排序,从而获得所需的效果。

此代码将生成您的第二张图像:

digraph G {
  rankdir=LR;
  size="7,5";
  browser->thread[style=invis];
  browser->ui_thread;
  browser->db_thread;
  browser->webkit_thread;
  browser->cache_thread;
  browser->file_thread;
  browser->io_thread;  
  io_thread[style=filled];
  cache_thread[style=filled];
  ui_thread->thread[label=inherit constraint=false]; 
  ui_thread->messageloop[style=dotted];
  db_thread->messageloop[style=dotted];
  webkit_thread->messageloop[style=dotted];
  cache_thread->messageloop[style=dotted];
  file_thread->messageloop[style=dotted];
  io_thread->messageloop[style=dotted];
}

Unfortunately, graph direction can only be specified once, and the whole graph stays in that direction. In this situation, you can usually get the desired effect with a combination of constraint=false and invisible edges to force some ordering.

This code will produce your second image:

digraph G {
  rankdir=LR;
  size="7,5";
  browser->thread[style=invis];
  browser->ui_thread;
  browser->db_thread;
  browser->webkit_thread;
  browser->cache_thread;
  browser->file_thread;
  browser->io_thread;  
  io_thread[style=filled];
  cache_thread[style=filled];
  ui_thread->thread[label=inherit constraint=false]; 
  ui_thread->messageloop[style=dotted];
  db_thread->messageloop[style=dotted];
  webkit_thread->messageloop[style=dotted];
  cache_thread->messageloop[style=dotted];
  file_thread->messageloop[style=dotted];
  io_thread->messageloop[style=dotted];
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文