c# - "tons"点的 Web 图表?

标签 c# jquery silverlight flash charts

我想知道是否有一些好的网络解决方案来显示“巨大数据集”的图表,我已经尝试过 amcharts 和 Highcharts Stock(jquery 解决方案)但没有成功。

一开始他们在工作,但此刻“chrome”告诉我 javascript 内存已满,页面崩溃。

有时我需要显示超过 20 行,每行都有超过 100.000 个点,所以最后我可以拥有巨大的 jquery 数组,这肯定会使互联网浏览器崩溃。

目前我愿意更改为某些 flash、silverlight 或其他解决方案(不是 java applet,因为我使用的是 C#)。

你们有什么推荐的?

更新 #1

例如:此应用程序的目的之一是查看 ECG channel 。 该人将携带带有多个“传感器”的设备(让我们定义 10 或 12 个,或多或少),该设备将每秒(或有时甚至更短的间隔)保存数据。并且可能有此人将使用此系统 3 天的情况)。

最小数据: 60 秒 * 60 分钟 * 24 小时 * 3 天 = 每条线 259.200 点。 8 行或更多 => 2.073.600 总分

可用性: 好吧,在这个健康领域,“读数”通常是相似的,没有足以在 3 天数据中识别的高点或低点。因此,对于此示例,最好是在需要时加载数据 > 平移/缩放幻灯片仅显示 1 小时,当它移动到其他时,然后 AJAX 获取其余数据。当然这是要走的路。但这不是我系统中的唯一情况。

我有其他类型或设备,其中“高点和低点”是巨大的,用户希望在不放大的情况下仅在一个“图表”中查看所有数据。因此,在这种情况下,从简单的角度来看,它是很容易看到读数上发生了什么,然后用户可以放大,因为数据已经在内存中,不需要进行更多的 AJAX 调用和刷新图表。

明智的做法:当我们查看更大的“规模”时,以一种“减少”点数的方式处理数据。当然,这是明智的做法,但同样,有时某些处理数学的结果会“伪造”并隐藏真实读数,最终会有一些“行为”不会显示在屏幕上图表。

所以,现在我真的需要找到一种方法来显示所有这些点。

注意:我非常感谢你们的所有反馈。

最佳答案

我想我同意 Neil 的意见……一定有某种方法可以在显示之前处理这些数据……我的意思是,这么多数据怎么可能显示在一个窗口中?你说一条线有 100000 个点……如果这些点中的每一个在 X、Y 平面上都是唯一的,那么 100000 个点将完全填满一个 300x300 的显示窗口。像这样的 20 行会使普通的 1024x1280 显示器完全饱和。

大概这不是您要找的东西,所以我假设一定有很多点重叠的情况。预处理数据以消除重复数据点将有助于大大减少数据大小。

很难确切地知道这个答案如何适合,或者在没有进一步细节的情况下给出更精确的说明,但如果您有问题或澄清,请编辑您的问题,我会修改我的答案(或删除它,如果我已经被误解了。)

对编辑 1 的回应:

我认为解决这个问题的方法是认识到对于任何给定的 View ,您只能显示与水平分辨率一样多的数据点,因此您可以将数据下载限制在这个范围内。

根据我所听到的(我承认我非常的细节),这个问题可以简化为:

  • 计算得到多少点(基于水平分辨率)
  • 根据数据、水平滚动、缩放和任何启发式方法计算这些点。
  • 动态下载该数据

这听起来还不错,您原来的问题(过多的数据导致系统崩溃)也消失了。这给您留下了如何计算下载数据的高度的次要问题。

I've other type or devices where the "highs and lows" are HUGE and the user would like to see ALL data in just one "chart" without zoom in. So, in this situations just from a simple look it is easy to see that something happened on the readings...

我可以在这里看到许多潜在的困难...

如果这些事件的时间尺度太短,它们将不会显示在简单绘制的图表上。如果您在特定折线图中有 100000 个点,并且您的默认查看区域为 1000 像素宽且没有缩放,则您只能看到 100 个数据点中的 1 个。例如,如果某些尖峰持续 10 个数据点,除非您做一些特殊的事情,否则它很可能不会在图表上可见(因此用户不知道“放大”以获得更高的分辨率)。你如何确定绘制点的高度?特定地点的实际数据点?像素覆盖的 100 个数据点的平均值?滚动平均值?如果不平均,您可能会完全错过尖峰。如果你做平均,你可以降低峰值或谷值的幅度,如果它们持续时间很短的话。

这,我认为(而且,再一次,我做了很多猜测)听起来像是真正的挑战。试图找到某种方式来显示图表,这肯定无法一次显示所有数据,但也许可以通过某种方式动态突出显示兴趣点(使用计算、注释和标记波峰和波谷)图表上的符号......诸如此类。)

关于c# - "tons"点的 Web 图表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9974977/

相关文章:

c# - 我在起始索引上有一个子串错误

c# - 使用 x :Bind not updating with MVVM 更改可见性

c# - 如何使用 SqlDataReader 返回和使用 IAsyncEnumerable

c# - 问题: Multithread bulkinsert

javascript - 如何阻止 jQuery 页面元素重复?

javascript - insertAdjacentHTML 未在 beforeend 之前添加

c# - silverlight列表框控件的边框曲线

JavaScript 到 jQuery 的翻译

c# - 在 Silverlight 中编辑并继续?

.net - 从 Silverlight 浏览器外应用程序使用 Google OAuth2