问题标签 [visualization]

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 投票
2 回答
2290 浏览

c# - 桌面应用程序中的数据可视化

我想在桌面应用程序中创建数据可视化,使用有助于完成此类任务的框架、语言和库。可视化应该是交互式的:可点击、可拖动、可定制、动画......

我想创建的是类似于此处看到的示例:http: //www.visualcomplexity.com/vc/

这些是我已经知道的链接:http ://delicious.com/laura_laura/visualization?setcount=100

首选语言是 C++/Visual C++ (MFC),因为我对它很熟悉,但欢迎使用任何其他技术,我想列出一个列表,从与 Visual C++ 的“尽可能相似”到与 Visual C++ 的“非常不同” C++。

WPF、flex、Adobe Air、flare、JavaScript(在浏览器中作为可以访问本地文件的客户端应用程序或作为桌面应用程序运行)是可能的,发布任何好的示例、教程、操作方法等链接了解。

不同选项的学习曲线和复杂性是什么?你会选择哪一个,为什么?您已经与哪一位合作过,您的体验如何?您将如何从具有这种特征的项目开始?

0 投票
7 回答
66149 浏览

visualization - 创建音乐可视化器

那么有人如何创建音乐可视化工具呢?我在谷歌上看过,但我还没有真正找到任何关于实际编程的东西;大多只是指向插件或可视化应用程序的链接。

我使用 iTunes,但我意识到我需要 Xcode 来编程(我目前部署在伊拉克,无法下载那么大的文件)。所以现在我只对学习它背后的“理论”感兴趣,比如处理频率和其他任何需要的东西。

0 投票
2 回答
489 浏览

git - 浏览复杂版本控制系统历史的最先进的用户界面是什么?

在使用 Mercurial 时,我有时会发现当有数千个变更集时很难理解变更集之间的关系,有时在任何时候都有十个或更多活动分支。目前,我使用hgview还可以,虽然它做出了合理的尝试来表示父关系,但它仍然基本上是一维的。我想使用GraphViz之类的图形可视化程序可能会很好地工作,或者可能会更古怪。

目前我正在处理大约 30,000 次修订的项目,我预计这个数字会显着增长;如果 100 位全职开发人员真正了解分布式版本控制并开始定期提交并分享他们的完整开发历史,那么我们最终可能会处理数百万次修订。因此,无需在每次查看时都将整个历史记录加载到 RAM 中的浏览器因此变得很有必要

我也对任何版本控制系统的优秀历史浏览器感兴趣,特别是如果我有机会将它们移植到 Mercurial。

0 投票
2 回答
696 浏览

java - Prefuse:重新加载 XML 文件

我是 prefuse 可视化工具包的新手,有几个一般性问题。出于我的目的,我想使用 prefuse (graphview / graphml) 执行初始可视化。渲染后,在用户单击节点时,我想完全重新加载新的 xml 文件以进行新的可视化。我想这样做是为了让我能够“预先打包”图表以供显示。

例如。如果我搜索泰德。我想要一个与 Ted 相关的 xml 文件加载并渲染一个显示。现在在显示中,我看到 Ted 有关联的节点,称为 Bill 和 Joe。当我单击 Joe 时,我想清除显示并加载与 Joe 关联的 xml 文件。等等。

我已经研究过加载一个包含所有节点和节点关系信息的非常大的 xml 文件,并允许 prefuse 使用从一个级别到另一个级别的跃点来处理这个问题。但是,最终我确信由于数据的大小会出现系统性能问题。

提前感谢您的帮助,约翰

0 投票
3 回答
3509 浏览

.net - 如何使用 .NET 显示 VRML 模型?

我有一个在 .NET 应用程序中显示 VRML 模型的请求。有人知道一种简单的方法,可能使用标准的 .NET 组件来实现这一点吗?在应用程序中表示 VRML 时,我可能必须面对哪些问题?

0 投票
4 回答
3272 浏览

java - Java:线程技术和概念

使用线程时,我有时将它们想象为在空间上下文中将对象之间的 3 维或更多维互连编织在一起。这不是一般的用例场景,但对于我所做的事情来说,这是一种有用的思考方式。

您是否使用任何 API 来帮助线程化?

您是否以不将线程概念化为进程的方式使用线程?

0 投票
2 回答
16064 浏览

c++ - 开源 C++ 数据可视化库

我们希望在桌面 GUI 中包含数据可视化(主要是时间线和图表;可点击、可拖动)。我们希望限制为开放源代码、非 Copyleft C++ 库,这些库允许商业用途并且可跨多个平台移植。我可以使用哪个库?我们的 GUI 基于 WxWidgets。

0 投票
10 回答
2852 浏览

visualization - 数据可视化的最佳示例?

我喜欢数据可视化,为了传播这种爱,我想我们可以分享我们最喜欢的数据可视化示例:

国际象棋移动 http://turbulence.org/spotlight/thinking/chess.html

克里斯哈里森的可视化 http://www.chrisharison.net/projects/visualization.html

我特别喜欢圣经和维基百科的可视化。


如果您对创建自己的可视化感兴趣,一个好的起点是查看 processing.js ( http://ejohn.org/blog/processingjs/ )。

0 投票
4 回答
1565 浏览

architecture - 您将如何显示/布局企业应用程序之间的数据流?

我的雇主是一家大型瑞士电信公司。我们有许多系统用于为不同的任务传输数据,例如性能管理、故障管理、配置管理等。

为了向“管理”(尖头发和其他)解释这些系统如何交互,我将有关数据流/格式/协议的信息收集到“数据库”(逗号分隔的劝说)中,然后为 Graphviz 生成代码(http: //www.graphviz.org/ ) 和 Yed ( http://www.yworks.com/en/products_yed_about.html ) 来可视化这些图表。

显示从我的数据库生成的这些图表起初相当有效..但是添加新的系统/数据流会导致 Graphviz 和 Yed 重新布局图表,因为这就是它们的工作方式......自然这真的让任何试图匹配的人感到困惑昨天看到的那个图,到今天显示的那个图。

您将如何显示/布局企业应用程序之间的数据流?

0 投票
9 回答
11671 浏览

algorithm - 绘制地形图

我一直致力于二维连续数据的可视化项目。这是您可以用来研究 2D 地图上的高程数据或温度模式的东西。从本质上讲,它实际上是一种将 3 维扁平化为 2 维加颜色的方法。在我的特定研究领域中,我实际上并没有使用地理高程数据,但这是一个很好的比喻,所以我将在这篇文章中坚持使用它。

无论如何,在这一点上,我有一个我非常满意的“连续颜色”渲染器:

连续彩色渲染器

渐变是标准色轮,其中红色像素表示坐标值较高,紫色像素表示坐标值较低。

底层数据结构使用一些非常聪明的(如果我自己这么说的话)插值算法来实现对地图细节的任意深度放大。

在这一点上,我想绘制一些地形轮廓线(使用二次贝塞尔曲线),但我还没有找到任何好的文献来描述找到这些曲线的有效算法。

为了让您了解我的想法,这是一个穷人的实现(渲染器在遇到与轮廓线相交的像素时只使用黑色 RGB 值):

带有贫民区地形线的连续颜色

但是,这种方法存在几个问题:

  • 具有较陡坡度的图形区域会导致地形线较细(并且通常是断线)。理想情况下,所有地形线都应该是连续的。

  • 具有更平坦斜率的图形区域会导致更宽的地形线(通常是整个黑色区域,尤其是在渲染区域的外围)。

所以我正在寻找一种矢量绘图方法来获得那些漂亮的、完美的 1 像素厚的曲线。算法的基本结构必须包括以下步骤:

  1. 在我要绘制地形线的每个离散高程处,找到一组坐标,其中该坐标处的高程与所需的高程非常接近(给定任意 epsilon 值)。

  2. 消除多余的点。例如,如果三个点在一条完全直线上,则中心点是多余的,因为可以在不改变曲线形状的情况下消除它。同样,对于贝塞尔曲线,通常可以通过调整相邻控制点的位置来消除某些锚点。

  3. 将剩余的点组装成一个序列,使得两点之间的每个线段都近似于高度中性轨迹,并且没有两条线段会交叉路径。每个点序列必须要么创建一个封闭的多边形,要么必须与渲染区域的边界框相交。

  4. 对于每个顶点,找到一对控制点,使得结果曲线相对于步骤 #2 中消除的冗余点显示出最小误差。

  5. 确保在当前渲染比例下可见的所有地形特征都由适当的地形线表示。例如,如果数据包含高海拔但直径极小的尖峰,则仍应绘制地形线。仅当特征直径小于图像的整体渲染粒度时,才应忽略垂直特征。

但即使在这些限制下,我仍然可以想到几种不同的启发式方法来寻找线条:

  • 找到渲染边界框内的高点。从那个高点开始,沿着几条不同的轨迹下坡。每当遍历线越过高程阈值时,将该点添加到特定于高程的存储桶中。当遍历路径达到局部最小值时,改变路线并上坡。

  • 沿渲染区域的矩形边界框执行高分辨率遍历。在每个高程阈值处(以及在拐点处,无论坡度反转方向),将这些点添加到特定于高程的存储桶中。完成边界遍历后,从这些桶中的边界点开始向内追踪。

  • 扫描整个渲染区域,以稀疏的规则间隔进行高程测量。对于每个测量,使用它与高程阈值的接近度作为决定是否对其邻居进行插值测量的机制。使用这种技术可以更好地保证整个渲染区域的覆盖,但是很难将结果点组装成合理的顺序来构建路径。

所以,这些是我的一些想法......

在深入研究实现之前,我想看看 StackOverflow 上的其他人是否有解决此类问题的经验,并且可以为准确有效的实现提供指导。

编辑:

我对 ellisbben 提出的“渐变”建议特别感兴趣。而我的核心数据结构(忽略一些优化插值快捷方式)可以表示为一组二维高斯函数的总和,这是完全可微的。

我想我需要一个数据结构来表示一个三维斜率,以及一个用于计算任意点的斜率向量的函数。在我的脑海中,我不知道该怎么做(虽然看起来应该很容易),但如果你有一个解释数学的链接,我会非常感激!

更新:

感谢 ellisbben 和 Azim 的出色贡献,我现在可以计算该领域中任意点的轮廓角。绘制真正的地形线将很快出现!

这是更新的渲染,有和没有我一直在使用的基于 ghetto raster 的拓扑渲染器。每个图像包含一千个随机样本点,用红点表示。该点的轮廓角由一条白线表示。在某些情况下,在给定点无法测量斜率(基于插值的粒度),因此红点出现时没有相应的等高线角度线。

享受!

(注意:这些渲染使用与以前的渲染不同的表面形貌——因为我在每次迭代时随机生成数据结构,而我正在制作原型——但核心渲染方法是相同的,所以我相信你得到这个想法。)

替代文字

替代文字

这是一个有趣的事实:在这些渲染图的右侧,您会看到一堆奇怪的轮廓线,它们处于完美的水平和垂直角度。这些是插值过程的产物,它使用插值器网格来减少执行核心渲染操作所需的计算数量(约 500%)。所有这些奇怪的轮廓线都出现在两个插值器网格单元之间的边界上。

幸运的是,这些文物实际上并不重要。尽管在斜率计算期间可以检测到伪影,但最终渲染器不会注意到它们,因为它以不同的位深度运行。


再次更新:

啊啊啊,作为我睡觉前的最后一次放纵,这是另一对效果图,一个是老式的“连续颜色”风格,一个有 20,000 个渐变样本。在这组渲染中,我已经消除了点样本的红点,因为它不必要地使图像混乱。

在这里,您可以真正看到我之前提到的那些插值工件,这要归功于插值器集合的网格结构。我应该强调的是,这些伪影在最终的轮廓渲染中将完全不可见(因为任何两个相邻插值器单元之间的幅度差异小于渲染图像的位深度)。

开胃!!

替代文字

替代文字