我一直在研究Silverlight图表控件,以显示大量样本,(五个单独系列中约10,000个数据点 - 全部~50k点)。
我发现Dundas,Visifire,Microsoft等现有的选项在显示超过几百个数据点时表现极差。
我认为现有图表控件的性能问题是由于矢量图形的大量使用造成的。 Ergo一个解决方案是客户端图表控件,它使用WritableBitmap类生成栅格图表。
在我堕落太久之前重新发明兔子洞 - 有没有人找到第三方或OSS控件来管理迷你线上的大量数据点?
答案 0 :(得分:7)
查看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/
我的遥测示例现在是我创建的CodeProject文章的一部分,如果你想看一眼!
答案 1 :(得分:3)
根据这里的建议,我刚刚试用了Visiblox和Infragistics。
Visiblox 具有良好的开发人员体验,干净的API,没有膨胀。虽然几千个数据点的性能良好,但在进入100k范围时性能会下降。这里有the Visiblox sample几千点(您可以下载示例并调整数据点的数量)。
现在,这里的常见论点是你不应该将那么多数据绑定到图表上,但是应该事先做一些修整。我同意这一点,但理想情况下,我想要一个图表控件来照顾我。进行缩放,平移以及所有这些都是非常重要的任务,我很乐意花费100美元来获得该功能。在这里重新发明轮子是显而易见的经济常识。
Infragistics 当然是正确的。我可以绑定一百万个odatapoints并获得平滑的表现。这是the Infragistics sample。
然而,Infragistics会安装大量垃圾(一个本地IIS网络应用程序,其中包含您可以在线查看的示例),除了(优秀的)示例和代码级文档之外,我确实错过了一些高级别的介绍。组件和它的各个模块。
由于SO上很多人推荐使用 Telerik 控件来获得干净的API,文档和开发人员支持,我还看了一下他们的图表控件。但是,我必须承认我发现它相当缓慢(缩放需要大约500-1000毫秒,这太长而不能感觉顺畅)。 这是the Telerik sample。
答案 2 :(得分:2)
Visifire是现在最快的图表。查看下面的博客链接。 http://www.visifire.com/blog/2011/12/02/fast-silverlight-charts/
图表图片显示Visifire比Visiblox快3到4倍......!
答案 3 :(得分:1)
在您自己开始使用WriteableBitmap之前,先看看RenéSchulte的WriteableBitmapEx
,然后在博客上发表文章here。太棒了。
答案 4 :(得分:1)
我不知道任何OSS或第三方控件都能满足您的需求。
在我需要100K +数据点的情况下,我们通过保持简单来使其工作。最大的性能杀手是每个数据点中的元素数量。通过将元素保持为带有静态画笔填充的简单椭圆,应用程序非常活泼。
答案 5 :(得分:1)
Infragistics声称能够在最近发布的xamDataChart中处理大量数据。
答案 6 :(得分:0)
我相信您正在寻找的Telerik样本here。它显示了您可以实际放大/缩小的大量数据。它们还具有服务器负载"Performance" Demo。以下是具有数百个数据点的Scatter Chart的示例。
答案 7 :(得分:-1)
您是否看过Telerik图表控件? 这是他们的一个演示的链接,他们使用100.000个数据点:
http://demos.telerik.com/silverlight/#Chart/Sampling
击>
我还应该提一下,我自己没有使用图表控件,所以我不能保证它们。但演示对我来说很好看。
修改强>:
上面的链接已经过时了。这里是Telerik图表控件最新版本的链接他们现在称之为ChartView:
http://demos.telerik.com/silverlight/#ChartView/FirstLook