我正在尝试使用Python在我的Django Web应用程序中进行一些交互式图形可视化.我找到了Graphviz并且能够使用Pydot(Graphviz的点语言的Python接口)在我的应用程序上输出静态图形(作为.png图像).
但是,我希望使我的图形更具交互性,例如能够在将鼠标移到其上时突出显示节点,使节点可点击,将节点拖动到其他位置并放大图形.
有没有办法在Graphviz中做到这一点?或者一般来说,有没有办法为我的Django应用程序制作交互式图形而无需使用Flash?我不想使用闪存,因为我不熟悉它,因为我想要可视化一个相当大的数据集.
我正在使用Graphviz绘制一些图表.我在节点上使用标签,我可以"\n"强制它将标签分成2行.有没有办法让Graphviz(或dot我正在使用)自动看到它应该拆分一些节点标签,并为它自己做出最佳的自动选择?
我试图在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)

任何想法我怎么能保持从边缘B到C直?
我有一个图表,我想要graphviz布局和可视化我.该图有122个边和123个节点.边缘有4种不同的类型,我希望它们在视觉上可以区分.但是我还没有决定最好的方法是什么,我想稍微调整一下表盘.不幸的是,我没有看到像边缘的"类"或"样式表"属性.我只能为每个边缘(大量重复)单独设置视觉属性.也许我错过了什么?毕竟可能有一些方法可以将边添加到4个不同的组然后设置组的样式,而不是单独的每个边?
我正在尝试使用Graphviz点(但我愿意使用其他东西)来生成一个带有长"节点主线"和许多小分支的图形.我希望主线从左到右是直的,在它上面或下面有小分支.然而,Graphviz"平衡"了两个分支,所以我最终得到了一个弯曲的图形.
为了说明,这是一个类似于我目前得到的草图:

这就是我真正想要的:

有没有办法强制或鼓励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脚本来为我做这个,但似乎功能应该已经存在.
因此,我一直在研究论文和网上看到以图表符号表示的图形模型(例如:http://www.cs.princeton.edu/~blei/papers/BleiNgJordan2003.pdf).
是否有一种快速简便的方法来生产这些?我进行了搜索和搜索,但我发现的只有GraphViz这样的解决方案,它实际上比我需要的更强大(因此更难以使用).PGF/Tikz似乎是我最好的选择,但再次看起来有点矫枉过正.
也许我最好的选择是在Inkscape中制作它们,或者咬紧牙关学习PGF/Tikz.他们是如此受欢迎,我认为会有一种更简单的方式来推销它们,但也许不是...... TIA.
我的应用需要动态调用图.我用callgrind工具(valgrind套件)运行它并得到callgrind.out.xxxxx文件.现在,我想对这些数据进行图形表示.KCacheGrind对我没什么帮助,因为它绘制了图形的有限部分(绘制~50个函数而不是〜1500个轮廓,我不知道如何修复它).如何获得将绘制所有函数的图形图像?
我在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) 这可能与如何在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之间的标签来使结果更加对称.