2010-07-12 2 views
2

큰 데이터 집합 (약 50000 점)이 선형 차트로 시각화되었습니다. 캔버스 크기는 데이터 집합의 크기에 따라 달라질 수 있습니다. 엄청난 양의 점으로 인해 드로잉이 너무 느려집니다. 서로 인접한 여러 점의 플로팅으로 인해 점이 어지럽고 겹치게됩니다. 데이터의 시각적 표현은 만족스럽지 않습니다. 성능을 향상시킬 수있는 부분 집합을 어떻게 표시 할 수 있습니까? 아무도 나에게 포인트의 실제 숫자의 하위 집합을 추출하는 데 도움이 될 것입니다 적절한 알고리즘을 제안 해 주시겠습니까? 내가 생각할 수있는대용량 데이터 집합을 차트에서 빠르게 처리하기

답변

0

모든 ... 타협 될 것이다 :

는 간단의 당신은, 을 vizualize하는 50K 항목이 목록을 가지고 있지만 당신은 단지 성능상의 이유로 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 : 당신은 1K 발스을 얻을 수 있도록

매 n 번째 태평양 표준시를 취할 그녀의 접근 방식은 평균을 얻을 것이다. 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)); 
} 

코드 검증되지 않은 - 그냥 생각 ... 답장을

+0

감사합니다. 인접한 점의 평균을 취하면 크기가 절반으로 줄어 듭니다. 그러나 두 가지 점이 (1,5) (80,90)이라고 가정하면 평균값은 47이되어 적절한 값을 나타내지 않습니다. 평균값 포인트가 서로 가까울 때만 도움이 될 것입니다. 숫자를 줄일 수있는 다른 방법이 있습니까? – sharmila

+0

나에 따르면 우리는 차트의 모양에 많은 영향을 미치지 않을 포인트를 제외함으로써 콜렉션의 크기를 줄일 수 있습니다. 예를 들어 (1,2) (2,4) (3,6)과 같은 점이 있다고 가정하면 그런 다음 요점 (2,4)을 없앨 수 있습니다.이 점이 좋은 해결책일까요, 아니면 하위 집합을 추출 할 수있는 다른 방법일까요? – sharmila

관련 문제