0

したがって、これは PHP というよりも数学の問題だと思いますが、他にどこに行くのかわかりません。だから私はすべてのユーザーからの評価分布を示すテレビ番組のウェブサイトを持っています. http://broadcasted.tv/user/2/albertmarch/http://broadcasted.tv/user/21/freshprincelive/で 2 つの例を見ることができます。現時点で各バーを計算するために使用する式は次のとおりです。

$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/のようにバーのサイズが同じであることです。

任意の推奨事項をいただければ幸いです。ありがとう

4

3 に答える 3

0

まず、コードの置き換えを最適化する必要があります

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

$pixelsactual = $division * $pixels;

$percentageここでは、変数は実際には必要ありません。

問題は、すべてのバーが表示されるようにハッキングしていることです。次に、一部のチャートでは、同じ高さに異なる値を持つ複数のバーが表示されることが予想されます。

そのハック (および 130 ピクセルのハック、$pixels に入れる必要があります) を削除し、減少する派生関数 (log など) を使用して、小さな値が急速に高さを得るようにすることをお勧めします。 、より高い値がよりゆっくりと高さを得る場合。

于 2013-06-26T14:25:35.243 に答える
0

最近見つけたハイチャートhttp://www.highcharts.com/demo/

すべての美学を扱っていたので、本当に楽しかったです

また、さまざまな種類のチャートも提供します。http://www.highcharts.com/demo/column-basic

于 2013-06-26T14:15:46.883 に答える