用板表示法绘制图形模型的软件

JMS*_*JMS 22 graphics graphviz pgf

因此,我一直在研究论文和网上看到以图表符号表示的图形模型(例如:http://www.cs.princeton.edu/~blei/papers/BleiNgJordan2003.pdf).

是否有一种快速简便的方法来生产这些?我进行了搜索和搜索,但我发现的只有GraphViz这样的解决方案,它实际上比我需要的更强大(因此更难以使用).PGF/Tikz似乎是我最好的选择,但再次看起来有点矫枉过正.

也许我最好的选择是在Inkscape中制作它们,或者咬紧牙关学习PGF/Tikz.他们是如此受欢迎,我认为会有一种更简单的方式来推销它们,但也许不是...... TIA.

Kar*_*ten 10

这是Dietz脚本的更精致的分支:https://github.com/jluttine/tikz-bayesnet


Tyr*_*Tyr 9

GraphViz真的不是那么难学.对于这些类型的图表,基本语言非常简单.我花了一些时间来复制(或多或少)来自该pdf的第一个例子,而关于它的好处在于,由于它的简单性,从一些其他数据源程序生成图表非常容易.

Digraph fig1 {
rankdir = LR; //order things from left to right

//define alpha and beta as existing
? [shape=circle];
? [shape=circle];
//not strictly nescessary but helps if you want to
//assign them specific shapes or colours

subgraph cluster_M //names beginning with "cluster" get a box drawn, an odd hack
{
    label = "M"

    ? [shape=circle];
    subgraph cluster_N
    {
        label = "N"
        z [shape=circle];
        w [shape=circle, style=filled]
        z->w; //quite literally z points at w
    }

    ? -> z;
}
? -> ?;
? -> w;
}
Run Code Online (Sandbox Code Playgroud)

使用dot -Tpng input.txt -o graph.png编译它看起来像这样.如果在气泡下面有标签很重要,你可以用几条额外的线来做到这一点,类似地,如果节点的特定位置很重要,你也可以调整它.实际上,如果您没有指定图像格式,则dot的默认行为是输出一个输入文件的版本,其坐标是每个元素的位置.

输出图像