标签: graphviz

Web应用程序中的交互式Graphviz图

我正在尝试使用Python在我的Django Web应用程序中进行一些交互式图形可视化.我找到了Graphviz并且能够使用Pydot(Graphviz的点语言的Python接口)在我的应用程序上输出静态图形(作为.png图像).

但是,我希望使我的图形更具交互性,例如能够在将鼠标移到其上时突出显示节点,使节点可点击,将节点拖动到其他位置并放大图形.

有没有办法在Graphviz中做到这一点?或者一般来说,有没有办法为我的Django应用程序制作交互式图形而无需使用Flash?我不想使用闪存,因为我不熟悉它,因为我想要可视化一个相当大的数据集.

django web-applications graph graphviz pydot

24
推荐指数
4
解决办法
3万
查看次数

Graphviz中的自动多行标签?

我正在使用Graphviz绘制一些图表.我在节点上使用标签,我可以"\n"强制它将标签分成2行.有没有办法让Graphviz(或dot我正在使用)自动看到它应该拆分一些节点标签,并为它自己做出最佳的自动选择?

graphviz

23
推荐指数
2
解决办法
9931
查看次数

Graphviz中簇之间的直边

我试图在Graphviz中的簇之间有一个边缘,其中边缘不影响排名.

看起来很好:

digraph {
  subgraph clusterX {
    A    
    B
  }

  subgraph clusterY {
    C
    D
  } 

  A -> B
  B -> C [constraint=false]
  C -> D
}
Run Code Online (Sandbox Code Playgroud)

然而,当我向C -> D边缘添加标签时,B -> C边缘试图绕过所述标签(看起来很丑陋).

digraph {
  subgraph clusterX {
    A    
    B
  }

  subgraph clusterY {
    C
    D
  } 

  A -> B
  B -> C [constraint=false]
  C -> D [label=yadda]
}
Run Code Online (Sandbox Code Playgroud)

任何想法我怎么能保持从边缘BC直?

graphviz

23
推荐指数
1
解决办法
1万
查看次数

Graphviz:如何为一组边分配相同的样式?

我有一个图表,我想要graphviz布局和可视化我.该图有122个边和123个节点.边缘有4种不同的类型,我希望它们在视觉上可以区分.但是我还没有决定最好的方法是什么,我想稍微调整一下表盘.不幸的是,我没有看到像边缘的"类"或"样式表"属性.我只能为每个边缘(大量重复)单独设置视觉属性.也许我错过了什么?毕竟可能有一些方法可以将边添加到4个不同的组然后设置组的样式,而不是单独的每个边?

grouping coding-style graph-theory stylesheet graphviz

23
推荐指数
2
解决办法
1万
查看次数

在Graphviz中强制"主线"节点成直线(或替代)

我正在尝试使用Graphviz点(但我愿意使用其他东西)来生成一个带有长"节点主线"和许多小分支的图形.我希望主线从左到右是直的,在它上面或下面有小分支.然而,Graphviz"平衡"了两个分支,所以我最终得到了一个弯曲的图形.

为了说明,这是一个类似于我目前得到的草图:

当前图表

这就是我真正想要的:

想要图

有没有办法强制或鼓励Graphviz生成第二个图形?我可以使用"虚拟"第二个分支让它做三向布局,然后隐藏/删除虚拟对象,但如果有更好的选择,那将是更好的选择.

dot graphviz

23
推荐指数
2
解决办法
9826
查看次数

你能在GraphViz中构建可重用的样式吗?

我正在使用graphviz来创建流程图.我每次都通过设置节点和边缘属性来更改样式:

node[shape="box", 
     style="filled, rounded", 
     fillcolor=lightyellow, 
     fontname="Verdana", 
     fontsize=9, 
     penwidth=.5, 
     color="gray83"]
   start, end;
Run Code Online (Sandbox Code Playgroud)

将这个和其他类似的声明包括在平行四边形,矩形,菱形等中有点痛苦.

我希望能够引用可重复使用的样式文档,而不是复制和粘贴到每个.dot文件中.

有没有标准的方法来做到这一点?我可以构建一个shell脚本或python脚本来为我做这个,但似乎功能应该已经存在.

flowchart graphviz

23
推荐指数
4
解决办法
2828
查看次数

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

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

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

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

graphics graphviz pgf

22
推荐指数
3
解决办法
6730
查看次数

解释callgrind数据

我的应用需要动态调用图.我用callgrind工具(valgrind套件)运行它并得到callgrind.out.xxxxx文件.现在,我想对这些数据进行图形表示.KCacheGrind对我没什么帮助,因为它绘制了图形的有限部分(绘制~50个函数而不是〜1500个轮廓,我不知道如何修复它).如何获得将绘制所有函数的图形图像?

valgrind graphviz callgrind

22
推荐指数
2
解决办法
2万
查看次数

Keras:"RuntimeError:无法导入pydot." 安装graphviz和pydot后

我在Windows 10上使用Anaconda Python 2.7

我正计划进行Keras可视化(当Spyder打开时)我打开了Anaconda命令提示符并点击安装了graphviz和pydot.现在,当我尝试运行以下内容时:

from keras.models import Sequential
Run Code Online (Sandbox Code Playgroud)

或者任何形式的"来自keras".,我收到错误:

ImportError: cannot import name gof
Run Code Online (Sandbox Code Playgroud)

我已经卸载并重新安装了Keras,Graphviz和pydot.我正在使用theano的开发版本.我找不到修复方法.

PS

如果我卸载graphviz和pydot,keras会再次运行

编辑

卸载anaconda并重新安装它包括theano,keras,graphviz和pydot后,我现在收到以下错误:

from keras.utils.visualize_util import plot

Using Theano backend.
Using gpu device 0: GeForce GTX 970M (CNMeM is disabled, cuDNN not available)
Traceback (most recent call last):

  File "<ipython-input-1-65016ddab3cd>", line 1, in <module>
  from keras.utils.visualize_util import plot

  File "C:\Anaconda2\lib\site-packages\keras\utils\visualize_util.py", line  8, in <module>
  raise RuntimeError('Failed to import pydot. You must install pydot'

RuntimeError: Failed to import pydot. You must install …
Run Code Online (Sandbox Code Playgroud)

python graphviz pydot theano keras

22
推荐指数
2
解决办法
3万
查看次数

Graphviz:将边缘标签放在另一侧

这可能与如何在graphviz中将边缘标签放置在边缘上有关:我有以下图表,我使用该命令可视化dot -Teps g.dot > g.eps:

graph triple {
    node [shape=box]; User; Object; Tag;
    node [shape=diamond,style=filled]; Triple;
    {
        User -- Triple [label = "1"];
        Object -- Triple [label = "1"];
    }
    {
        rank=same;
        User;
        Object;
    }
    Triple -- Tag [label="n"];
}
Run Code Online (Sandbox Code Playgroud)

我希望通过在User的左侧放置User和Triple之间的标签来使结果更加对称.

dot graphviz

21
推荐指数
2
解决办法
1万
查看次数