我有一个对象列表,我需要组织为美学图.我目前的方法涉及IronPython和遗传算法,但这需要太长时间.
我一直在阅读Graphviz,QuickGraph和Graph#,但我不需要可视化部分 - 我已经有一个应用程序将显示给定x/y坐标的节点.有人告诉我,Sugiyama算法和基于力的算法族都倾向于输出令人愉悦的图形,但我似乎找不到一个.NET库来输出坐标而不是图像而没有一些非常严重的源代码黑客攻击.
任何人都可以推荐库,算法等吗?
我已经看了很多用于图形布局的包(Graphviz,Gephi,Cytoscape,NetworkX等等,这些都是比较流行的),但它们似乎都没有扩展到这种尺寸.有哪些技术可视化这种尺寸的图形或将它们减少到更易于管理的东西?
我正在尝试创建一个基于浏览器的工具,让您检查依赖图,因为它们出现在编程语言和Makefile的模块系统中.
我正在寻找一个可视化框架,为我绘制图纸.
要求是工具包可以
可选地,如果它可以很容易地移动节点并突出显示或隐藏图形的某些部分以便更好地概览,那将是很好的.
使用支持的内容并不重要(SVG,画布,一切都很好).
到目前为止,我已经查看了很多库(尤其是JavaScript中的Graph可视化库),但还没找到合适的库:
你知道什么符合我的要求吗?谢谢!
我玩Dwarf Fortress游戏.对我来说,主要的挑战是有效地设计堡垒的布局.意思是,每个行业流程应尽可能密集,以尽量减少行程距离.
一个例子可能是食品工业
.每个灰色椭圆代表一个建筑物.每个白色矩形代表建筑物的产品.
我的目标是找到将建筑物分布在2D网格上的算法,使得这些建筑物之间的距离在它们如何连接的意义上是最小的.这意味着fishery和loom可相距甚远,但loom并farmer's应尽可能接近.
目前我已经考虑过使用一些现成的软件来模拟布局,但算法的一些技巧会很好.
目前我正在考虑一些力导向算法,但我不确定离散网格要求.
问题的形式化:是否存在一种在离散坐标下工作的强制绘制图算法?
更新:我已经在AS3中找到了Force绘制算法的实现(web也包含JS版本).我会尝试将其转换为离散版本.但我怀疑它会起作用......
更新2:评论中要求进一步限制.它们是:每个建筑物占据虚拟网格上的单个单元格.建筑物可以在相邻的单元格上.建筑物不能堆叠/重叠.(PS:在游戏中,每个建筑都有规模,通常为3x3,但我想让问题更加通用,以便采用更多方法).
我想将有向图呈现给浏览器中显示的servlet /图片.应该有某种优化的位置.不依赖于Swing是首选.算法并不重要,因为图的结构由业务逻辑决定.期望能够向边缘添加标签.如果我可以将其作为png/svg服务,那将是最佳选择.
你会推荐哪个图书馆/服务?
澄清:
1)问题是所有关于图形 - 如有向无环图 - 非 - 图表.
2)flot,谷歌图表 - 无法绘制图表,只有图表,或者我错过了什么?
3)不,我不需要互动
4)graphviz会很好,但格拉巴java库已经过时了,它是基于swing/awt构建的.虽然从理论上讲可能会对图像进行摆动,但在服务器应用程序中这不是我最喜欢的方式.
5)使用不在本地托管图像的在线服务是可以的.
编辑:添加指向维基百科的链接以阐明图表/图表术语
我想使用networkx为图形生成布局.是否可以将此布局转移到cytoscape并将其绘制到那里?我试着简单地写一个图表
import networkx as nx
G = nx.Graph()
G.add_edge(0,1,weight=.1)
G.add_edge(2,1,weight=.2)
nx.write_gml(G,'g.gml')
nx.write_graphml(G,'g.xml')
Run Code Online (Sandbox Code Playgroud)
但这些都不是在cytoscape中读取的.我不确定如何以包含位置的格式传输图表.
我正在寻找一个可以进行图形布局的Javascript库/引擎.(当我说布局时,我的意思是逻辑上很好地定位顶点.)我正在使用的图形都是m-ary树.M通常不超过5或6,但在某些情况下可能更大.
我确实有一些我现在使用的东西,Graphviz的节点程序,它完美地运行.问题是,在运行Web应用程序时,每次我想要一个布局时,我都必须向服务器发送请求.最好,我想用Javascript编写的东西可以在客户端快速运行.它需要做的就是提供布局信息(相对定位和诸如此类的东西).我不需要它绘制到画布或使用SVG或任何东西,我感兴趣的是布局.
像jQuery或RaphaelJS这样的库使用对我来说很好.我会用它.我只是想找点东西来加快速度.
另外,如果我能找到一个很好的描述算法来做布局,我会考虑编写自己的.但我真的不想花太多时间.我现在有一些工作,所以在客户端获取它只是一个奖励,而不是必需品.
在布置图表时,有哪些边缘重叠最小化技术?(最好与GraphViz相关)还有哪些现有的软件能够以平面方式布局图形?
当前布局 - http://www.evecakes.com/doodles/master.gif
左上角的粉红色部分看起来很好,而浅蓝色部分有一些可避免的边缘重叠.
我希望显示一个图表(网络图,而不是图表)并显示其随时间的变化.是否有标准或最佳方式来执行此操作,或任何类型的"网络差异"工具?
我正在寻找所涉及的总体布局决策的概述,即一系列选项和权衡取舍,以及存在这些决策的最佳实践指南.
我有一些graphviz点格式的相对简单(自动生成)的图形.这些显示了通过状态机的路径,但是当我希望图形处于状态顺序时,dot有一个稍微混乱的习惯,即决定两个节点必须在同一个等级上.我已经尝试了很多的设置(包括:n和:s和weight下面列出的),但我无法说服点,放置第三个国家以上的第四个国家.
我有很多图表存在这个问题:点似乎有一些东西可以决定如果两个节点在同一个等级上会更好,并且没有什么可以覆盖它.我甚至有代码指定一个节点应该是a rank=sink,但是dot决定将另一个节点放在它下面.
有没有办法建议点,节点的顺序比任何其他约束更重要?
用于生成图形的代码如下所示:
digraph {
ERROR [label="Error"];
FirstSTATE [label="Initial State" URL="\ref FirstSTATE"];
FirstSTATE -> SecondSTATE;
SecondSTATE [label="Second State" URL="\ref SecondSTATE"];
SecondSTATE -> ThirdSTATE;
ThirdSTATE [label="Third State" URL="\ref ThirdSTATE"];
FourthSTATE [label="Fouth State?" shape="diamond"];
ThirdSTATE:s -> FourthSTATE:n [weight=50];
FourthSTATE -> FifthSTATE [label="Yes" ];
FourthSTATE -> ThirdSTATE [label="No"];
FifthSTATE [label="Fifth State" URL="\ref FifthSTATE"];
SixthSTATE [label="Sixth State?" shape="diamond"];
SixthSTATE -> ERROR [label="Yes" ];
SixthSTATE -> SeventhSTATE [label="No"];
FifthSTATE -> SixthSTATE;
SeventhSTATE [label="Seventh State" …Run Code Online (Sandbox Code Playgroud) graph-layout ×10
graph ×6
algorithm ×2
graphviz ×2
javascript ×2
optimization ×2
c# ×1
cytoscape ×1
dot ×1
gml ×1
graph-theory ×1
java ×1
networkx ×1
performance ×1
planar-graph ×1
python ×1
server-side ×1
time ×1