2010-07-12 7 views
2

J'ai un grand ensemble de données (environ 50000 points) qui a été visualisé dans un graphique linéaire. La taille de Canvas peut varier en fonction de la taille de l'ensemble de données. Une quantité massive de points rend le dessin trop lent. Il en résulte également un encombrement et un chevauchement des points dû au tracé de plusieurs points proches les uns des autres. La représentation visuelle des données sera donc insatisfaisante. Comment puis-je afficher un sous-ensemble de points disponibles qui augmentera la performance? Quelqu'un peut-il me suggérer avec un algorithme approprié qui aidera à extraire le sous-ensemble du nombre réel de points?Traitement rapide de grands ensembles de données dans les graphiques

Répondre

0

tout ce que je peux penser serait un compromis ...:

pour faire simple disons que vous avez une liste avec 50k entrées à vizualize, mais vous voulez seulement attirer 1k pts pour des raisons de performance. ..

quelques approches différentes seraient ...:

prendre tous les n'th pt de sorte que vous obtenez: 1k vals

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 son approche obtiendrait le moy. aux pts ...:

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)); 
} 

code non testé - juste quelques réflexions ...

+0

Merci pour la réponse. Prendre la moyenne des points adjacents réduirait la taille à la moitié. Mais ma question est, si supposons que les deux points sont (1,5) (80,90) alors la moyenne sera de 47 qui ne représentera pas la valeur appropriée. ne sera utile que lorsque les points sont proches les uns des autres. Y a-t-il d'autres façons de réduire le nombre? – sharmila

+0

Selon moi, nous pouvons réduire la taille de la collection en excluant les points qui n'affecteront pas beaucoup la forme de la carte.Par exemple, si supposons qu'il y a des points comme (1,2) (2,4) (3,6) qui traverse Ensuite, le point (2,4) peut être éliminé. Serait-ce une bonne solution ou existe-t-il un autre moyen d'extraire le sous-ensemble? – sharmila

Questions connexes