问题标签 [graph-drawing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1753 浏览

graphviz - 用于图形操作程序的 Graphviz 或 Dynagraph?

我正在研究编写一个向用户显示图表的程序。图表会随着时间而改变(用户应该能够右键单击图表项目并询问更多详细信息,这将弹出图表的新位),并且用户可能能够拖动图表的某些部分. 理想情况下,我还希望能够自己指定图形某些部分的相对布局,同时将整体布局留给库,但这不是必需的。

我正在尝试决定要使用的图形布局库。据我所知,两个领先的候选人是 Graphviz 和 Dynagraph。Dynagraph 网站建议 Graphviz 用于绘制静态图,并且 Dynagraph 是从 Graphviz 派生的,包含将要更新的图的算法。它有一个名为 Dynasty 的示例程序,它完全符合我的要求。但是,Graphviz 站点包含一个名为 Lefty 的示例程序,它似乎完全符合我的要求。从谷歌(和 SO)的结果来看,Graphviz 似乎也被广泛使用。

最后,我想用 Python 或 Scheme 之类的语言编写 GUI 部分,这让我对使用 C++ 有点犹豫,因为我知道将它与解释器接口更难。

所以我的问题是,哪个库更适合我正在尝试做的事情?他们都有优点和缺点吗?他们中的一个是否真的停止了开发,只是离开它的网站来迷惑我?

(我已经看到Simple Dynamic Graph Display for C++开源库来设计有向图,但由于 Lefty 和语言问题,我无法判断他们对 Graphviz 或 Dynagraph 的选择是否正确。)

0 投票
2 回答
9856 浏览

c# - 绘制有向无环图:最小化边交叉?

在没有像 Efficient Sugiyama 这样的绘图算法的情况下,以树的形式布置 DAG 中的顶点(即顶部没有入边的顶点、仅依赖于下一层的顶点等)相当简单。但是,是否有一种简单的算法可以最大限度地减少边缘交叉?(对于某些图,可能不可能完全消除边缘交叉。)一张图片说一千个单词,那么有没有一种算法可以建议一些不交叉边缘的东西。(与此相比)。

编辑:结果

我已经接受了 Senthil 的建议 graphviz/dot —— 快速浏览一下文档确认它很容易用作库或外部工具,并且输出格式非常容易解析。但是,我最终选择使用GraphSharp,因为我已经在使用 .NET 等(尽管它绝对没有 dot 强大)。结果“足够好”,并且可以通过一点边缘路由和调整来做得更好(模糊的文本是因为3.5 WPF)。

自动布局图 http://public.blu.livefilestore.com/y1pEY8I95GtlzcxZzhDMhhKoUyejT_sVVZ4jlsDK2fdl6XAR4WV4-yuSesY6chXokmAZxdJXZ4Bv674TqwpT1-fOg/dag3.gif

这是完整的C# 代码(这是所有引用 QuickGraph 或 GraphSharp 的代码——是的;就是这么简单):

0 投票
0 回答
152 浏览

.net - .NET 实现平面性测试

是否有任何平面性测试算法(如 Boyer-Myrvold 或其他任何人)的任何 .NET 实现?我浏览了网络,但我没有找到

0 投票
1 回答
27844 浏览

configuration - 减小 graphviz 生成的图形的大小(如面积)

有没有人有任何减少graphviz生成的图形大小的一般技巧(大小为区域,而不是文件大小)。

我有一个相当大的图表(700 个节点)。我为每个节点设置了一个较小的字体大小,但它似乎只是减小了字体大小而不是实际节点大小。是否还有任何属性可以减少图表中空白的总量?谢谢!

0 投票
2 回答
382 浏览

graph-layout - 自动旋转图形

我正在用力导向布局绘制图形,问题是创建的图形是随机定向且不可预测的,这使得看它们有些混乱。例如,假设节点 A 是两个单独的图 G1 和 G2 的成员。在强制导向布局中,节点 A 可能最终位于 G1 的左侧,但位于 G2 的右侧。

现在,我试图通过在将图形布局算法应用于图形布局算法后以确定性方式自动旋转图形来减少混淆。可以为此计算最小边界矩形,但如果旋转算法可以包括一些关于顶点和边的附加信息,那就更好了。

在这种情况下,每个顶点都是一个带有时间戳和字数的文档,边表示文档之间的无向和有向关系。也许有一种方法可以旋转图形,以便旧文档集中在左侧,而新文档集中在右侧?与链接相同:箭头应指向右侧而不是左侧。这听起来像是一个合理的方法,但我不知道如何计算这样的东西(谷歌也没有真正帮助)。

笔记:

  • 我认为有图形布局算法可以处理旋转,但我更喜欢涉及力导向布局的解决方案。
  • 可以让用户手动旋转图形,但这需要保存图形方向,这是我宁愿避免的事情,因为在文档数据库中没有空间。
0 投票
2 回答
2071 浏览

c++ - 具有“已知”坐标的 C++ 中的图形绘图/TSP-Route-Drawing:如何?哪个库/工具?

我正在为 C++ 中车辆路由问题的变体开发某种启发式方法。

生成解决方案后,我想绘制此解决方案。解决方案是各种旅行的组合,所有旅行都在一个公共站点开始和结束。因此,我有一个顶点集,其中所有坐标和边由两个顶点 ID 定义。此外,我当然有顶点对之间的所有距离。

在我的程序的额外窗口打开中绘制它会很有帮助,但是将绘图写入图形文件也应该没问题。

有什么简单的方法来绘制这个?你会如何解决这个问题?

首先,我尝试寻找常见的图形可视化包(graphviz、tulip、networkx (python)),但我意识到它们都专门用于图形布局(当没有坐标时)。当我错的时候纠正我。我不知道是否可以告诉这些包我已经有了坐标,帮助布局算法。

我尝试的下一件事是带有 geomview 输出的 CGAL 库-> 直到现在都没有运气-> ubuntu 崩溃 geomview。

还有一个问题:使用一些冒着绘图风险的非布局 2d-plot-libraries 是一个更好的主意,这不是很好查看(除了缩放还有更多的事情要做吗?)或使用一些布局算法-基于库(例如graphviz,tulip,networkx),向它们提供顶点之间的距离,并希望布局算法在以易于查看的方式绘制时保持距离?

  • 如果非布局绘图是这样做的方法:您推荐哪个库?
  • 如果基于布局的绘图是这样做的方法:我如何利用这些库中的距离/坐标?你推荐哪个图书馆?

感谢您的输入!

萨沙

编辑:我使用 PLplot 库 (http://plplot.sourceforge.net/) 完成了原型实现。结果很好,目前应该足够了。我发现并选择了这个库是因为一个相关的项目(VRPH 软件包/Groer)使用了这个图并且源代码被分发了。因此,实施是在很短的时间内完成的。在我看来,API 有点笨拙和低级。也许那里有一些更现代的(可能不是基于 c 的库)库?数学GL?迪斯林?也许我也会尝试一下。

在车辆路线问题中绘制多个旅行的好处是“还不错”的算法倾向于发现很好的非重叠和发散的旅行,这对眼睛非常有益;-)

0 投票
3 回答
2347 浏览

wolfram-mathematica - 创建图表的技巧

我想以编程方式创建这样的图表 (来源:yaroslavvb.com

我想我应该将 GraphPlot 与 VertexCoordinateRules、VertexRenderingFunction 和 EdgeRenderingFunction 一起用于图形。我应该为彩色斜面背景使用什么?

编辑 主要使用西蒙的想法,这是我最终使用的简化的“不太健壮”的版本


(来源:yaroslavvb.com

0 投票
5 回答
11442 浏览

c++ - 用于绘制流程图或有向图的免费 C++ 库?

我想在我的程序中嵌入流程图绘图画布。用户可以:

  • 画“节点”(矩形节点就够了)和“边”(最好是正交的)连接“节点”;
  • 使用鼠标拖动节点进行布局和调整矩形大小;
  • 鼠标选择一个或多个节点进行删除、复制、粘贴等操作;
  • 通过鼠标选择一个或多个节点来编辑它们的预定义属性(体积、温度、压力等)。
  • 改变颜色(可选)
  • 将数据保存到文件/从文件中读取数据。

绘制完成后,程序只需要获取连接逻辑(在有向等数据结构中)和属性进行进一步计算。

是否有任何免费或开源的 C++ 库可以做到这一点?(跨平台不需要,windows下就够了。)

0 投票
6 回答
12057 浏览

algorithm - 电路图/框图

我正在寻找(漂亮的)电路/框图绘图的算法或可视化工具。

我也对这个问题的一般表述感兴趣。

通过“电路图”,我的意思是探索具有 I/O 端口及其连接(电线)的框图(矩形)的布局和布线的能力。这些框图可以是分层的,即一些块可能有一些嵌套的内部子结构等。

这个主题与经典绘图密切相关,需要考虑端口位置的补充约束,可能还有块的形状(各种大小的矩形)。Graphviz 工具对这个问题没有反应(至少我之前的实验并不令人满意)。

力导向算法吸引了我的注意力,但我刚刚找到了关于经典有向图的论文。

有什么提示吗?

[2013 年 11 月 21 日更新] 似乎迄今为止最好的参考是Spönemann

0 投票
0 回答
684 浏览

.net - 在 .NET 中绘制图表

我有一些输入数据(字符串双精度)(服务器应用程序)。我需要绘制图表并将其另存为图片

我可以使用哪些工具?

PS。

我有一些服务器端代码应该从一些数据生成这个图表。我可以在不向用户显示图表的情况下获得图像(在 Web 或 Win 表单中)吗?