首页 新闻 会员 周边

当Chart控件显示包含大量的点的曲线时遇到的困难

0
悬赏园豆:100 [已关闭问题] 关闭于 2017-07-12 09:15

大家好!

情况是这样的,开发软件是Visual Studio 2015,使用Chart控件来把一些数据显示为曲线,即ChartType设置为Spline。遇到的问题是当包含的点比较多时(比如Points包含1万个点),显示的延时会非常严重。想知道这种情况能不能通过修改某些属性解决?(一开始是想通过自己写算法筛选出极值点来解决,不过后来觉得如果微软已经有针对这样情况的优化属性设置,能拿来用就更好了)。

希望能在此得到帮助。谢谢!

White Dream的主页 White Dream | 初学一级 | 园豆:109
提问于:2017-04-07 15:01
< >
分享
所有回答(2)
0

合并.因为那么多的点本身也是没有意义.

你写一个合并方法.传入一个数组输出制定长度的数组.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-04-07 15:04

合并的意思是,取一些极值点?

支持(0) 反对(0) White Dream | 园豆:109 (初学一级) | 2017-04-07 15:31

@White Dream: 要看需求..这个提取算法算是高科技了..

最简单的法子是全部相加.

比如你有10000个点.要取100个.那就每100个加起来生成1个数.就得到100个数

或者每50个点加起来取道200个数.然后每2个数求平均值.得到100个数.

当然有更正经的算法.不过就得根据实际情况来

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-04-07 16:02

@吴瑞祥: 

谢谢!你说的方式我先想下。刚刚尝试了下DataBindXY方法,效果好多了(因为我测试时是用的.AddPointXY方式)。也查看了一些类似的提问,猜测最终解决的办法可能会比想象的简单。

支持(0) 反对(0) White Dream | 园豆:109 (初学一级) | 2017-04-07 16:37

@吴瑞祥: 

算法最初我是这样想的,比如最终要取100个点,取50个区间,每个区间包括 (总数/50)个点,每个区间内,取一个最大值点和一个最小值点。然后把这100个点做最终的曲线。

支持(0) 反对(0) White Dream | 园豆:109 (初学一级) | 2017-04-07 16:42

@吴瑞祥:please 你这个方法有什么依据?那就每100个加起来生成1个数.就得到100个数

那还是原始数据吗?

支持(0) 反对(0) 博学多思 | 园豆:76 (初学一级) | 2017-04-24 16:17

@博学多思: 不是.这种报表的目的是为了人肉眼看.

本身你那么密的点肉眼也看不出来.这些信息本来也是没啥用的.10000到100可能有点夸张.

意思是这样的.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-04-24 18:18
0

很久之前自己解决了,在一定数目内取极值点。用极值点形成新的曲线。以后或许有更好的办法,暂时没发现VS有内置的设置可以解决。

White Dream | 园豆:109 (初学一级) | 2017-07-09 15:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册