2013-06-26 2 views
0

그래서 이것은 PHP보다 수학 문제가 더 많을 것이라고 생각하지만 어디로 갈지는 모르겠습니다. 그래서 모든 사용자의 등급 분포를 보여주는 TV 쇼 웹 사이트가 있습니다. 여기에 두 개의 예가 표시됩니다 http://broadcasted.tv/user/2/albertmarch/ 및 여기 http://broadcasted.tv/user/21/freshprincelive/입니다. 여기 내가 순간 바의 각각을 계산하는데 사용하는 수식이다막대 그래프 높이 PHP

$division = $scores[$i][1]/$countvotestotal; 
//we divide the number of scores for each score (1 to 10) by the total number of score 
$percentage = $division * 100; 
$pixels = 180; 
//max number of pixels 
$pixelsactual = ($percentage/100) * $pixels; 
$addthat = $percentage * 3.4; 
//add some pixels to give more relief to the charts (otherwise, with many ratings, you end having bars between 10px and 20px) 
$finalpixels = $pixelsactual + $addthat; 
if ($finalpixels > 130) { 
    $finalpixels = 130; 
} 
//and this is a fix that I use, basically, if there is only one rating the biggest bar is gonna be huge (especially because of the $addthat var which add some px with a ratio to the final pixels value) 

문제 일부 차트 (제 프로필 등) 똥 보는 것이거나 서로 다른 값이 같은 동일 바의 크기를 갖는다 http://broadcasted.tv/user/98/armchairtv/

모든 권장 사항은 정말 감사하겠습니다. 감사합니다

답변

0

Highcharts 나는 최근에 그것은 또한 당신을 위해 다른 차트 유형을 많이 제공합니다 모든 미학

처리하기 때문에 정말 그것을 즐겼다

http://www.highcharts.com/demo/을 발견했다. http://www.highcharts.com/demo/column-basic

+0

나는 그걸 확인해 보았습니다. 내 현재 차트가 엉덩이에 엄청난 고통을 줄 것 같은 모양으로 보이도록 사용자 정의했습니다. 하지만 막대의 높이가 좋으므로 어떻게 얻을 수 있는지 알아 내려고 노력할 것입니다. – Callombert

0

먼저, 당신은 정말 여기에 필요하지 않습니다

$pixelsactual = $division * $pixels; 

$percentage 변수에 의해

$pixelsactual = ($percentage/100) * $pixels; 

를 대체 코드를 최적화해야합니다.

문제는 모든 막대가 표시되도록 해킹하는 것입니다. 그런 다음 어떤 차트는 같은 높이에서 다른 값을 가진 여러 막대를 가질 것입니다.

해킹을 제거하고 (130px 해킹, 그냥 $ 픽셀에 넣어야합니다.) 로그 함수 또는 유사한 함수와 같은 함수를 사용하여 작은 값 값이 높을수록 높이가 더 낮아질수록 높이가 빠르게 증가합니다.

0

시험해보십시오 먼저 데이터 배열에서 가장 높은 데이터를 가져옵니다.

$highest=max($array); 

그런 다음 1 %를 확보하십시오.

$x=$highest*0.01; // 1% 

지금 당신은 루프

echo $array[$a]*$x; 

//$highest*$x=100% or 100px 

을 할 수있는 당신은 당신의 변수 차트 높이를 얻을. 팁 ... 더 나은 픽셀 높이를 위해 * 4를 곱할 수 있습니다