2010-07-12 37 views
2

我有一个大的数据集(约50000个),其具有在一条线上画布chart.The尺寸可以根据数据集的大小变化来可视化。大量的点使得绘图太慢。由于几个点彼此靠近绘制,也导致点的混乱和重叠。因此,数据的视觉表示将不令人满意。如何显示可提高性能的可用点的子集?任何人都可以用适当的算法来提示我,这将有助于提取实际点数的子集?处理在图表大型数据集quickely

回答

0

一切我能想到的将是一个妥协...:

,以保持它的简单,让我们假设你有5万个条目的清单vizualize, 但你只想画1K点的性能的原因。 ..

一些不同的方法会是...:

抓住每一个第n个PT等你拿1K瓦尔斯:

List<double> src = ... //50k entries 
List<double> viz = new List<double>(); 
for(int i=0;i<1000;i++) 
    viz.Add(src[(int)(i * (src.Length/1000d))]; 

ANOT她的方法会得到平均值。给点...:

List<double> src = ... //50k entries 
List<double> viz = new List<double>(); 
for(int i=0;i<1000;i++) { 
    int from = (int)(i * (src.Length/1000d)); 
    int to = (int)((i+1) * (src.Length/1000d)); 
    double avg = 0; 
    for(int j=from;j<to;j++) 
     avg += src[j]; 
    viz.Add(avg/(to-from)); 
} 

测试的代码 - 只是一些想法...

+0

感谢您的答复。 以相邻点的平均值会减少尺寸half.But我的问题是,如果假设两个点是(1,5)(80,90),那么平均将是47,这将不描绘适当value.Taking平均只有当分数相近时才会有帮助。还有其他减少数字的方法吗? – sharmila 2010-07-13 13:14:21

+0

根据我的说法,我们可以通过排除不会影响图表形状的点来减小集合的大小。例如,假设有像(1,2)(2,4)(3,6)这样的点经过同样的线。然后点(2,4)可以消除。这是一个很好的解决方案,或者有什么其他方式可以提取子集。 – sharmila 2010-07-14 09:57:09