2013-06-26 30 views
0

所以我想這是一個比PHP更重要的數學問題,但我不知道它會去哪裏。所以我有一個電視節目網站,顯示每個用戶的收視率分佈。這裏可以看到兩個例子: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以獲得更好的像素高度