哪些算法适用于交互式/实时绘图?

Posted

技术标签:

【中文标题】哪些算法适用于交互式/实时绘图?【英文标题】:What algorithms are good for interactive/realtime graph-drawing? 【发布时间】:2010-09-25 14:58:28 【问题描述】:

哪些算法适用于实时数据的交互式/实时图形绘制和直接操作?

如果做不到这一点 - 您使用哪些库来绘制图形?

建议;

Prefuse信息可视化工具包 还有其他的吗?

顺便说一句-我的意思是图论意义上的图-点和线

任何语言 实时我的意思是图表应该可以在屏幕上操作一次。

【问题讨论】:

【参考方案1】:

我会推荐 Jeff Heer 参与过的任何库:

D3 Protovis Flare Prefuse

我相信这三个项目都是开源的。 Jeff Heer 非常擅长在他的代码中引用论文,至少在 Prefuse 库中是这样。查看 Prefuse 源代码:

BalloonTreeLayout:使用的算法是 G. Melançon 和 I. Herman 的研究论文 Circular Drawings of Rooted Trees, Reports of the Centre for Mathematics and Computer Sciences, Report Number INS–9817 ,1998 年。

ForceDirectedLayout.java:没有提到参考,但是有很多 cmets 描述了它是如何工作的。

FruchtermanReingoldLayout.java:引用 Jung。在他们的网站上我找到了paper which has references to various algorithms

NodeLinkTreeLayout.java:使用的算法来自 Christoph Buchheim、Michael Jünger 和 Sebastian Leipert 的研究论文 Improving Walker's Algorithm to Run in Linear Time,Graph Drawing 2002。该算法纠正了 Walker 算法中的性能问题,它概括了 Reingold 和 Tilford 的整理树图的方法,以支持在任何给定节点处具有任意数量子节点的树。

RadialTreeLayout.java:使用的算法是 Ka-Ping Yee、Danyel Fisher、Rachna Dhamija 和 Marti Hearst 在他们的研究论文Animated Exploration of Dynamic Graphs with Radial Layout,InfoVis 2001 中使用的算法。该算法计算径向布局会考虑尺寸的可能变化,并保持方向和排序约束,以促进布局配置之间的平滑和可理解的转换。

SquarifiedTreeMapLayout:此特定算法取自 Bruls、D.M.、C. Huizing 和 J.J. van Wijk,“Squarified Treemaps”,Data Visualization 2000,Proceedings of the Joint Eurographics and IEEE TCVG Sumposium on Visualization,2000 年,第 33-42 页。可通过http://www.win.tue.nl/~vanwijk/stm.pdf 在线获取。有关 TreeMaps 的更多信息,请参阅http://www.cs.umd.edu/hcil/treemap-history

【讨论】:

我已经阅读了三个软件项目的源代码,但我很少在代码中看到引用! (包括 Prefuse,但不包括你提到的其他两个) 我找到了不少。请参阅我的更新答案。只需查看布局类即可找到参考。【参考方案2】:

prefuse visualization toolkit 看起来是个不错的候选人。

Prefuse 支持一组丰富的 数据建模的功能, 可视化和交互。它 提供优化的数据结构 表格、图表和树, 布局和视觉编码技术, 并支持动画、动态 查询、综合搜索和 数据库连接。前置是 用 Java 编写,使用 Java 2D 图形库,很容易 集成到 Java Swing 中 应用程序或 Web 小程序。预熔 根据 BSD 条款获得许可 许可证,并且可以免费用于 商业和非商业 目的。 (来自主页)

【讨论】:

【参考方案3】:

图表绘制是一个很大的领域。这是graph drawing research community web site 的链接。他们有一个专门关于绘图的年度会议。 我还可以建议阅读一些Prof. David Harel's Publications - 他的研究领域之一是绘图,例如this paper。在一般情况下,这似乎是一个很难解决的问题。也许您可以将您的应用程序限制为某些受限制的图形子集(平面图可能过于严格)。可能带有一小组顶点的简单图更容易操作。

【讨论】:

【参考方案4】:

有一些与Graphviz 相关的漂亮论文。特别是:

E.R. Gansner, E. Koutsofios, S.C. North, and K.-P. Vo (1993) "A Technique for Drawing Directed Graphs" S.C. North and G. Woodhull (2002) "On-line Hierarchical Graph Drawing"

【讨论】:

【参考方案5】:

我使用 Dot 语言来描述图表。而且,Dot 编译器的输出包括 SVG,它是 XML 格式,可以嵌入到 Xhtml 中。

http://en.wikipedia.org/wiki/DOT_language

【讨论】:

不是交互式的,虽然“instaviz”iphone 应用很有趣。【参考方案6】:

不知道你在追求什么......

听起来您可能正在寻找类似于 rrdtool 的东西?

也许他们网站上的一些信息会有所帮助:

http://oss.oetiker.ch/rrdtool/

【讨论】:

【参考方案7】:

我是 stackflow 的新手,很抱歉回复晚了。根据您希望获得的交互性...您可能还不想查看Flot(使用 JQuery,交互性较低)或processing...更具交互性。

【讨论】:

以上是关于哪些算法适用于交互式/实时绘图?的主要内容,如果未能解决你的问题,请参考以下文章

使用 htmlwidget 将交互式绘图保存到路径

操作系统 王道考研2019 第二章:进程管理 -- 调度算法:适用于交互式系统(时间片轮转调度算法优先级调度算法多级反馈队列调度算法)

大数据可视化项目的难点都有哪些?

Jupyter Notebook:带有小部件的交互式绘图

行业分析| 音视频呼叫邀请适用于多领域

opencv 绘图及交互(python)