【问题标题】:High density Silverlight charting control高密度 Silverlight 图表控制
【发布时间】:2010-04-09 06:31:10
【问题描述】:

我一直在研究 Silverlight 图表控件以显示大量样本(五个独立系列中的约 10,000 个数据点 - 总共约 5 万个点)。

我发现 Dundas、Visifire、Microsoft 等现有的选项在显示数百个数据点时表现极差。

我认为现有图表控件的性能问题是由于大量使用矢量图形造成的。 因此,一种解决方案是使用 WritableBitmap 类生成栅格图表的客户端图表控件。

在我掉进车轮再发明兔子洞太远之前 - 有没有人找到第三方或 OSS 控件来管理迷你图上的大量数据点

【问题讨论】:

  • 您好,看看 SciChart,它能够在性能演示中以 30FPS(每秒 3,000,000 个数据点)渲染多个系列,总计 100,000 个数据点。这是一项新产品,将于 2012 年第一季度初上线。它不具备 LOB 图表所具有的所有功能,但支持多种图表类型、基本光标、缩放、平移和轴缩放,并且非常高表现。 abtsoftware.co.uk/News/tabid/93/articleType/ArticleView/…

标签: silverlight charts


【解决方案1】:

查看 Visiblox (http://www.visiblox.com/) 图表。我目前正在开发一个遥测应用程序,该应用程序在同一个 Silverlight 组件中使用了他们的三个图表,总共绘制了大约 36,000 个点,并且在性能方面几乎没有减速(如果有的话)。

他们的网站上有一个高性能示例 - http://www.visiblox.com/examples/LargeDataSets。看了以下博文后,我选择了使用 Visiblox:

新的性能对比:http://www.visifire.com/blog/2011/12/02/fast-silverlight-charts/

旧性能对比:http://www.scottlogic.co.uk/blog/colin/2010/12/visiblox-visifire-dynamicdatadisplay-charting-performance-comparison/

我的遥测示例现在是我创建的 CodeProject 文章的一部分,如果您想看看!

【讨论】:

    【解决方案2】:

    根据此处的建议,我刚刚试用了 Visiblox 和 Infragistics。

    Visiblox 拥有良好的开发者体验、干净的 API、没有臃肿。虽然几千个数据点的性能还可以,但当您进入 100k 范围时,性能就会下降。这是the Visiblox sample,有几千个点(您可以下载示例并调整数据点的数量)。

    现在,这里的常见论点是您不应该将那么多数据绑定到图表,而应该事先进行一些修剪。我同意这一点,但理想情况下,我想要一个图表控件来为我解决这个问题。获得缩放、平移和所有这些都是不平凡的任务,我很乐意花 100 美元来获得该功能。不在这里重新发明轮子是显而易见的经济常识。

    Infragistics 肯定是正确的。我可以绑定一百万个数据点并获得流畅的性能。这是the Infragistics sample

    但是,Infragistics 安装了很多垃圾(一个本地 IIS Web 应用程序,其中包含您也可以在线看到的示例),除了(优秀的)示例和代码级文档之外,我确实错过了对每个示例的一些高级介绍组件和它的各个模块。

    由于 SO 上的很多人都推荐 Telerik 控件用于他们干净的 API、文档和开发人员支持,因此我也确实查看了他们的图表控件。但是,我必须承认我发现它相当慢(缩放大约需要 500-1000 毫秒,这太长了,感觉不流畅)。 这是the Telerik sample

    【讨论】:

    【解决方案3】:

    Visifire 现在是最快的图表。查看下面的博客链接。 http://www.visifire.com/blog/2011/12/02/fast-silverlight-charts/

    图表图像显示 Visifire 比 Visiblox 快 3 到 4 倍......!

    【讨论】:

      【解决方案4】:

      在您开始自己玩 WritableBitmap 之前,请查看 René Schulte 的 WriteableBitmapEx,他在博客上写了 here。很棒的东西。

      【讨论】:

      • 很好的建议!从那以后,我一直在用 WritableBitmapEx 编写一个小游戏,但还没有开始在任何图表方面做得很明智。相当不错的图书馆。谢谢安东尼。
      【解决方案5】:

      我不知道有任何 OSS 或 3rd 方控件可以满足您的需求。

      在我需要 100K+ 数据点的情况下,我们通过保持简单来使其工作。最大的性能杀手是每个数据点中的元素数量。通过将元素保持为一个简单的椭圆并使用静态笔刷填充,该应用程序相当活泼。

      【讨论】:

      • 你好,你最后用的是哪个组件能渲染100k点?
      【解决方案6】:

      Infragistics 在其最近发布的 xamDataChart 中声称能够处理大量数据。

      http://www.infragistics.com/dotnet/netadvantage/silverlight/data-visualization/xam-web-data-chart.aspx#Overview

      【讨论】:

        【解决方案7】:

        我相信您正在寻找的 Telerik 示例可以在 here 找到。它显示了您实际上可以放大/缩小的大量数据。他们也有一个服务器负载"Performance" Demo。这是一个带有数百个数据点的Scatter Chart 示例。

        【讨论】:

          【解决方案8】:

          您看过 Telerik 图表控件吗? 这是他们使用 100.000 个数据点的演示之一的链接:
          http://demos.telerik.com/silverlight/#Chart/Sampling

          我还应该提到我自己没有使用图表控件,所以我不能保证它们。但演示对我来说看起来不错。

          编辑
          上面的链接已经过时了。这是 Telerik 图表控件最新版本的链接,他们现在称之为 ChartView:
          http://demos.telerik.com/silverlight/#ChartView/FirstLook

          【讨论】:

          • 是的,Telerik 组件从那时起已经更新。我已经更新了链接。
          猜你喜欢
          • 1970-01-01
          • 2015-02-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多