我正在尝试使用 dot 绘制我们企业中的服务和服务器的部署图。对于第一次迭代,我使用neato将每个服务绘制为一个盒子,并使用graphviz和neato防止重叠记录,再加上允许样条线,使我能够获得一个像样的布局,并将边缘作为依赖项。
现在我需要将物理服务器放置在每个盒子内。首先,我将每个服务制作为一个名称以cluster开头的子图,然后将代表物理服务器的节点放置在每个框中。再次,在 GraphViz 的帮助下- 如何连接子图?我伪造了边缘来连接集群而不是节点。问题是,这只适用于点。当我使用 neato 进行布局时,它不知道边缘位于簇之间,因此它仅移动我用来锚定边缘的簇的节点。结果是簇盒巨大且重叠。
我希望这是有道理的。有没有办法强制neato将集群中的节点分组?
我需要使用点在两条边之间添加一个链接。我需要添加到图中的是图片中显示的两条边之间标有“b”的红色链接。
源代码如下:
digraph {
a -> b;
a -> c;
}
Run Code Online (Sandbox Code Playgroud)

我有一个数字电路模拟器,需要绘制几乎完全像这个问题的电路图(和答案)与dot/graphviz的方框图布局
这是我第一次遇到DOT和graphviz.幸运的是,DOT语言规范可用,并且还有许多示例.
然而,我仍然不清楚一个细节,我要问的是一个新手:我有一个完整的数据来绘制图表.如何从中创建DOT文件?
作为文字逐行?
# SIMPLIFIED PSEUDOCODE
dotlines = ["digraph CIRCUIT {"]
for node in all_nodes:
dotlines.append(" {}[{}];".format(node.name, node.data))
for edge in all_edges:
dotlines.append(" {} -> {};".format(edge.from_name, edge.to_name))
dotlines.append['}']
dot = "\n".join(dotlines)
Run Code Online (Sandbox Code Playgroud)
或者我应该以某种方式转换我的数据并使用一些模块以DOT格式导出它?
在 dot 中,您可以定义集群,它们基本上是一组节点周围的框。(1)
是否可以定义一个集群,使其在另一个集群中呈现(一个盒子中的一个盒子)?
(1)也参见子图和群集在http://www.graphviz.org/content/dot-language
我制作了以下图形:
我想添加一个额外的箭头,从“远程存储库”一直指向“工作副本”(标有“git pull”),并且我希望该箭头理想地首先稍微向下,然后向左,然后向上。
当我简单地在代码中添加一个箭头时,图形最终看起来像这样:
这是代码:
digraph G {
/* set direction of graph to be left-->right */
rankdir="LR";
/* make boxes instead of ellipses */
node [shape=box];
/* should enforce nodes to be horizontally aligned */
/* is not working, though... */
rank=same;
/* assign labels to nodes */
wc [label="working copy"];
id [label="index"];
lr [label="local repo"];
rr [label="remote repo"];
wc -> id [label="git add"];
id -> lr [label="git commit"];
lr -> rr [label="git push"];
rr -> wc [label="git pull"]; …Run Code Online (Sandbox Code Playgroud) 我正在使用networkx库来读取和写入dot图形。根据此处的文档,write_dot()方法应该可以访问,但是当我尝试时,
>>> import networkx
>>> networkx.write_dot(graph,fileName)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'write_dot'
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我想呈现一个有向图,如:
A
^ ^
/ \
/ \
B C
Run Code Online (Sandbox Code Playgroud)
但是,无论我以何种顺序排列语句,dot都坚持生成如下图像:
B C
\ /
\ /
v v
A
Run Code Online (Sandbox Code Playgroud)
我试过指定端口,但是然后边缘就包起来了。它不会更改节点的位置。
我正在观看一门课程,他说安装“Graphviz(点)Stephanvs”扩展。
我安装了该扩展,然后重新加载 VSCode。
我有一个 .dot 文件,当我单击...图标时,我没有看到“在侧面打开预览”选项。
我也尝试过ctrl + k- ctrl + k,v-ctrl + shift + v但没有成功。
我有一个哈希对象,其结构看起来类似于:
{:category1 =>
{:subcategory1 =>
[
{:article => "some article", :date => "2010-04-04"},
...
],
:subc2 => [...]
},
:category2 => {...},
...
}
Run Code Online (Sandbox Code Playgroud)
如何将它可视化为红宝石中的图形?
是否有一个简单的方法/ gem/lib将此Hash转换为DOT?
我正在使用GraphViz点布局计算相当大的布局.我的源结构是一个图表,其中一些节点连接而其他节点没有连接.连接节点的布局是完美的,但点对齐所有其他节点的直线行,这导致相当大的输出长度.是否有任何改变摆脱这个?
我正在制作一个动态生成的实验室实验图.这就是现在的样子:

理想情况下,我希望蓝色节点在顶部排成一行,这样无论导致它们的历史有多大,当前的实验都是可见的.有没有办法在GraphViz中做到这一点?我正在使用PyDot,但也打开手动编辑点图.
我在这里发现了一个可能相关的问题,是否会将它们放在子图帮助中?
编辑:这是当前的点代码.
digraph depgraph {
rankdir=BT;
dpi=400;
"/experiments/2013-12-19_planmacro" [shape=rectangle, href="/experiments/2013-12-19_planmacro", fontsize=11, color="#61BD4D", label="Plan 96-well plate montage macro", penwidth=2];
"/experiments/2013-07-01_fluoromax" [shape=rectangle, href="/experiments/2013-07-01_fluoromax", fontsize=11, color="#cccccc", label="Testing OD730", penwidth=2];
"/experiments/2013-06-12_cloning" [shape=rectangle, href="/experiments/2013-06-12_cloning", fontsize=11, color="#cccccc", label="Re-cloning TFs", penwidth=2];
"/experiments/2014-01-02_startwt" [shape=rectangle, href="/experiments/2014-01-02_startwt", fontsize=11, color="#61BD4D", label="Start WT Cultures", penwidth=2];
"/experiments/2013-06-04_learning" [shape=rectangle, href="/experiments/2013-06-04_learning", fontsize=11, color="#cccccc", label="Learning R + Bioconductor", penwidth=2];
"/experiments/2013-07-xx_induction" [shape=rectangle, href="/experiments/2013-07-xx_induction", fontsize=11, color="#61BD4D", label="induction again", penwidth=2];
"/experiments/2013-06-04_bg11" [shape=rectangle, href="/experiments/2013-06-04_bg11", fontsize=11, color="#cccccc", label="BG11 Media + Plates", penwidth=2];
"/experiments/2013-06-13_chipseq" [shape=rectangle, href="/experiments/2013-06-13_chipseq", fontsize=11, color="#61BD4D", …Run Code Online (Sandbox Code Playgroud) 我想显示一个a指向一个节点的节点b。b位于子图中。以下点图可视化代码应该可以工作。
digraph
{
a;
subgraph cluster_mysubgraph
{
a->b;
}
}
Run Code Online (Sandbox Code Playgroud)
唉,虽然节点a是在任何子图之外声明的,但它是在内部渲染的mysubgraph(在 Ubuntu 14.04 上的 graphviz 2.36.0 上观察到):

我尝试过诸如预声明b之类的变体。没有成功。
解决方法是在另一个集群子图中声明a。
digraph
{
subgraph cluster_pseudo
{
a;
}
subgraph cluster_mysubgraph
{
a->b;
}
}
Run Code Online (Sandbox Code Playgroud)
这可以防止a出现在 内部mysubgraph,但另一个子图并不是真正的选择。

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