2010-08-24 16 views
0

히스토그램 컨테이너 클래스를 개발 중이며 기준점을 기준으로 컷오프 지점을 결정해야합니다. 나는 컷오프 포인트를 멋진 숫자로보고 싶다. 그래프가 스케일 된 것과 같은 방식이다.C# 날짜/축 축 눈금

기본적인 질문에 내 요청을 증류하려면 데이터 축 레이블 번호 목록에서 판단 할 수있는 기본 방법이 있습니다. 예를 들어

: 그것은 5 개 쓰레기통을 가지고 감각을 만들 것

Array{1,6,8,5,12,15,22} 

.

Bin Start Count 
0    1 
5    3 
10    2 
15    0 
20    1 

빈 시작 재료는이 경우 그래프에서 축 레이블을 선택하는 것과 동일합니다. 정말 쓰레기통 및 히스토그램에 대한 상관 없어이 질문의 목적

, 나는 질문의 그래프 규모 축 라벨 부분에 더 관심이 있어요. 내가 LINQ를 사용하여 내 응용 프로그램에 대한 C# 4.0, 그래서 멋진 솔루션을 사용하는 것입니다

환영합니다.

나는 일부 로그 기본 10 스케일링 재료를 사용하여 먼 과거에 이런 물건을 시도했지만, 나는 그것이이 응용 프로그램에 대한 큰만큼 구체적으로 작업도 없었어. 로그 스케일링을하고 싶지는 않습니다. 근데 ​​가장 가까운 정수로 반올림하기 위해 10을 사용했습니다. 나는 그것이 큰 숫자와 아주 작은 숫자 그리고 아마도 날짜들에 대해서 일하기를 바란다; 날짜는 복식으로 변환하고 그런 식으로 구문 분석 할 수 있습니다.

모든 자료는 큰 만족을 드릴 것입니다.

당신은 간단하게 뭔가를 시작할 수

답변

0

: 당신이 xPoints의 히스토그램을 CALC 수있는이 시점에서

NUM_BINS is a passed argument or constatn (e.g. NUM_BINS = 10) 
x is your array of x-values (e.g. int[] x = new int[50]) 

int numBins = x.Length < NUM_BINS ? x.Length : NUM_BINS; 

하고 xPoints이 많이 분포의 한쪽으로 가중하는 경우 (어쩌면 그냥 중간 점 대 왼쪽 카운트 중간 지점의 오른쪽), x [] 범위에서 log/exp 구분을 사용하십시오. 히스토그램이 평평한 경우 선형 분할을 사용하십시오.

double[] xAxis = new double[numBins]; 
double range = x[x.Length-1] - x[0]; 
CalcAxisValues(xAxis, range, TYPE); //Type is enum of LOG, EXP, or LINEAR 

이 함수는 TYPE을 기반으로 포인트를 동일하게 배치합니다.