java - Grappa Graphviz 点可视化问题和问题

标签 java graphviz dot graph-layout family-tree

我正在使用这个点代码进行测试:

digraph G { edge [dir=none];
p1 [shape=circle,style=filled,label="",height="0.01",width="0.01"];
q1 [shape=circle,style=filled,label="",height="0.01",width="0.01"];
q2 [shape=circle,style=filled,label="",height="0.01",width="0.01"];
q3 [shape=circle,style=filled,label="",height="0.01",width="0.01"];
{rank=same; father->p1; mother->p1};
{rank=same; q1->q2->q3};
{rank=same; son1; daughter1; daughter2};
p1->q2;
q1->son1;
q2->daughter1;
q3->daughter2;
}

我创建图形的 Java 代码如下:

Graph graph = null;

    graph = program.getGraph();

    JScrollPane jsp = new JScrollPane();
    jsp.getViewport().setBackingStoreEnabled(true);

    GrappaPanel gp = new GrappaPanel(graph);
    gp.addGrappaListener(new GrappaAdapter());
    gp.setScaleToFit(false);
    jsp.setViewportView(gp);

输出是这样的:Link

为什么树格式如此错误?有没有可能让树从左到右显示?

最佳答案

您必须先“请求”graphviz(任何工具,“dot”、“neato”...)“格式化”图形,然后才能(以吸引人的方式)在 GrappaPanel 中显示它。在构建 GrappaPanel 之前,您需要执行以下操作:

String [] processArgs = {"dot"}; // You can use "neato" or whatever formatter you want
Process formatProcess = Runtime.getRuntime().exec(processArgs, null, null);
GrappaSupport.filterGraph(graph, formatProcess);
formatProcess.getOutputStream().close();

GrappaSupport.filterGraph 中的“图形”是您的图形。之后,您的图表格式正确,您可以使用 GrappaPanel 来查看它。结果会比您在链接中发布的更令人愉快。

希望对您有所帮助,问候。

PS:为了让上面的代码工作,你必须在路径中有“点”(或者你使用的任何其他格式化程序),否则你需要给它提供可执行文件的完整路径。

关于java - Grappa Graphviz 点可视化问题和问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7217288/

相关文章:

python - Pygraphviz 安装失败,错误代码为 1083 无法打开文件 graphviz/cgraph.h : No such file or directory

performance - GraphViz Dot的生成时间非常长

windows - 使用 Notepad++ 编辑 DOT 文件

graphviz - 以 graphviz (DOT) 格式描述的图形的手动布局

java - 更新我的实体时,我的旧实体也会更新

graphviz - 如何引导边缘脱离右侧的菱形?

python - 如何在使用graphviz渲染的图形中获取节点坐标

java - Servlet 可以获取 HTTPS session ID 吗?

java - 即使没有单元测试,构建自动化真的有助于提高生产力吗?

java - SunCertPathBuilderException 尽管设置了信任库属性