2010-05-11 2 views
8

저는 PHP로 선 그래프를 만들고 있습니다. 나는 라인 그래프의 최대 값을 내 아이템 콜렉션의 최대 값으로 설정하고 있었지만, 그래프의 읽기가 어려워지면서 그래프의 상단과 교차 할 때 그래프의 가장 높은 라인을 볼 수 없었다. 그래서 내가 필요한 것은 숫자의 집합을 가지고 선 그래프의 논리 최대 값이되어야 하는지를 계산하는 공식 ... 그래서 몇 가지 예는 기본적으로PHP는 일련의 임의의 숫자를 사용합니다. 어떻게 선 그래프의 논리적 인 최대 값을 선택할 수 있습니까?

3500 
250 
10049 
45394 
434 
312 
     Max value on line graph should probably be 50000 

493 
412 
194 
783 
457 
344 
    max value on line graph would ideally be 1000 

545 
649 
6854 
5485 
11545 
     In this case, 12000 makes sense as max value 

그래서 가까운에 위로 반올림 같은 간단한 천분의 일이 효과가 있을지 모르지만 숫자가 커짐에 따라 점진적으로 증가 할 필요가 있습니다. (첫 번째 예에서는 46,000 대신 50000) 이러한 숫자의 최대 값은 약 백만입니다.

모든 권장 사항을 크게 높이 평가하겠습니다. 감사합니다.

private function FigureMaxValue($array) 
    { 
     $highestNumber = max($array); 
     if ($highestNumber == 0) return 0; 
     $highestNumber = $highestNumber * 1.1; 
     (float)$highestNumber = round((float)$highestNumber, 0); 
     $maxValue = ceil((integer)$highestNumber/100) * 100; 
     return $maxValue; 
    } 
+0

첫 번째 예에서 451 391 대신 50001이있는 경우 최대 값은 무엇입니까? – IVlad

+0

어떤 PHP 버전입니까? – erisco

+0

@IVlad : 53,000ish라고 말하고 싶습니까? (가장 중요한 것은 53000이 아닌 53500이나 53585와 같이 쉽게 나눌 수있는 정수입니다.) @erisco : PHP 5 – stormist

답변

1

내가 $highestValue * 1.05이나 뭐 같은 가장 높은 값 위의 크기를, 다만 것 : 여기

내가에 정착 무엇을, 귀하의 의견에 대한 여러분 모두 감사합니다. 당신은 여전히 ​​이상치 IE의 문제에 직면하게 될 것이다 -

4 
5 
12 
2 
1 
4 
4266 

당신이 낮은 숫자에 해상도를 잃을 것이 경우. 이상 치를 버리려면 각 요소의 표준 편차를 테스트 할 수 있습니다.

2
1. $numbers = array(3500, 250, 10049, 45394, 434, 312) 
2. $highestNumber = max($numbers) 
3. $n = 10^(strlen($highestNumber) - 1) 
4. $highestNumber = $highestNumber/$n 
5. $newMax = ceil($n) 
6. $newMax = $newMax * $n 
+0

"잘못된 매개 변수가 있습니다" – stormist

+0

PHP_ROUND_HALF_UP 매개 변수가 PHP 5.3.0에 추가되었습니다. 어떤 PHP 버전을 사용합니까? –

+0

대신 ceil()을 사용하십시오. 위의 대답을 편집했습니다. –

관련 문제