2009-08-28 2 views
1

저는 막대 그래프에 가격 결과가 채워지도록 요구하는 프로젝트를 진행하고 있습니다. 차트는 지정된 가격 범위 내의 항목 수를 표시합니다. 예를 들어, 아마존의 경우 $ 0- $ 10의 가격 범위에 9 개 항목이 있고 x 축은 $ 0- $ 10을 표시하고 y 축은 9 값을 채 웁니다.더 효율적인 방법으로 x 축 점을 그릴 수 있습니까?

내 막대 그래프에는 8 바 모두 비슷한 가격대를 가지고 있습니다. $ 0- $ 10, $ 10- $ 20, $ 20- $ 30 ...

내 질문은 이것입니다 : 이러한 개별 지점을 정의하는 가장 좋은 방법은 무엇입니까?이 항목들 사이에는 공통 가격대가 없으므로 x 축은 고정 숫자가 될 수 없습니다. 결과 범위 내에서 동적으로 계산되어야합니다.

따라서, 나는 x 축 지점을 만드는 오전 현재 다음과 같이

내가 가장 낮은 결과를 가지고 : @numbers[0] = results[0];

을 내가 가장 높은 결과를 가지고 : @numbers[8] = results[-1];

그러면 중간의 th 2 : @number [4] = (@number [0] + @ numbers [8])/2;

I는 다음 과정을 반복

6 번

@numbers [2] = (@numbers [0] + @ 번호 [3])/2; @number [6] = (@number [4] + @ numbers [8])/2; @number [1] = (@ number [0] + @ numbers [2])/2; @number [3] = (@number [2] + @ numbers [4])/2; @number [5] = (@number [4] + @ numbers [6])/2; @number [7] = (@number [6] + @ numbers [8])/2;

이것은 필자에게 필요한 결과를 제공하지만 심하게 반복적으로 보이고 더 나은 방법이 있다고 생각합니다.

루프를 만들려고 시도했지만 덜 장황하게 작성할 수 없습니다.

DRY 라인을 따라 더 빠른 방법이 있습니까?

답변

0

빈은 항상 같은 크기입니까? 귀하의 예에서는 모든 공유 범위 = 10입니다. 그렇다면, 당신은 할 수 :

binspacing = overall range/(numberofbins-1); 

및 빈 n의 위치는 숫자 [0] 플러스 N 배 binspacing의 x 축 위치 할 것이다.

+0

아마도 목표가 복잡한 코드로 작성하는 것이면 내 방식이 더 우수했을 것입니다. 감사합니다. – ryan

+0

내 답변이 귀하의 목적에 부합한다는 뜻입니까? – Argalatyr

관련 문제