23

PHPをベースに自分のサイトでグラフ(Stdent mark distribution)を描きたいです。これどうやってするの?

4

8 に答える 8

23

pChartは、もう 1 つの優れた PHP グラフ作成ライブラリです。

于 2009-03-14T08:18:37.353 に答える
13
<?
# ------- The graph values in the form of associative array
$values=array(
    "Jan" => 110,
    "Feb" => 130,
    "Mar" => 215,
    "Apr" => 81,
    "May" => 310,
    "Jun" => 110,
    "Jul" => 190,
    "Aug" => 175,
    "Sep" => 390,
    "Oct" => 286,
    "Nov" => 150,
    "Dec" => 196
);


$img_width=450;
$img_height=300; 
$margins=20;


# ---- Find the size of graph by substracting the size of borders
$graph_width=$img_width - $margins * 2;
$graph_height=$img_height - $margins * 2; 
$img=imagecreate($img_width,$img_height);


$bar_width=20;
$total_bars=count($values);
$gap= ($graph_width- $total_bars * $bar_width ) / ($total_bars +1);


# -------  Define Colors ----------------
$bar_color=imagecolorallocate($img,0,64,128);
$background_color=imagecolorallocate($img,240,240,255);
$border_color=imagecolorallocate($img,200,200,200);
$line_color=imagecolorallocate($img,220,220,220);

# ------ Create the border around the graph ------

imagefilledrectangle($img,1,1,$img_width-2,$img_height-2,$border_color);
imagefilledrectangle($img,$margins,$margins,$img_width-1-$margins,$img_height-1-$margins,$background_color);


# ------- Max value is required to adjust the scale -------
$max_value=max($values);
$ratio= $graph_height/$max_value;


# -------- Create scale and draw horizontal lines  --------
$horizontal_lines=20;
$horizontal_gap=$graph_height/$horizontal_lines;

for($i=1;$i<=$horizontal_lines;$i++){
    $y=$img_height - $margins - $horizontal_gap * $i ;
    imageline($img,$margins,$y,$img_width-$margins,$y,$line_color);
    $v=intval($horizontal_gap * $i /$ratio);
    imagestring($img,0,5,$y-5,$v,$bar_color);

}


# ----------- Draw the bars here ------
for($i=0;$i< $total_bars; $i++){ 
    # ------ Extract key and value pair from the current pointer position
    list($key,$value)=each($values); 
    $x1= $margins + $gap + $i * ($gap+$bar_width) ;
    $x2= $x1 + $bar_width; 
    $y1=$margins +$graph_height- intval($value * $ratio) ;
    $y2=$img_height-$margins;
    imagestring($img,0,$x1+3,$y1-10,$value,$bar_color);imagestring($img,0,$x1+3,$img_height-15,$key,$bar_color);        
    imagefilledrectangle($img,$x1,$y1,$x2,$y2,$bar_color);
}
header("Content-type:image/png");
imagepng($img);
$_REQUEST['asdfad']=234234;

?>
于 2009-07-03T07:09:36.237 に答える
12

あなたの最善の策は、php_gd2 を検索することです。これは、PHP に付属するかなりまともな画像ライブラリです (php.ini で無効にしただけです)。完成した画像をいくつかの形式で出力できるだけでなく、適切なグラフをかなり簡単に作成できる十分な機能があります。 .

編集:いくつかの便利なリンクを提供すると役立つ場合があります:

http://www.libgd.org/php_gd2 - 最新版はここから入手できます
http://ca3.php.net/gd -php_gdマニュアル。

于 2009-03-14T07:34:00.597 に答える
11

Google のチャート APIを使用してチャートを生成できます。

于 2009-03-14T07:56:55.847 に答える
6

グラフの生成に使用できるライブラリは多数あります。

詳細は上記とこちらにリストされています。

于 2009-03-16T09:09:55.820 に答える
5

最も簡単な解決策は、Google Chart API http://code.google.com/apis/chart/を使用することです。

棒グラフや円グラフを作成したり、3D を使用したりできます。いくつかのパラメーターを使用して URL を作成するのと同じくらい簡単です。以下の簡単な例を参照してください。

この円グラフはとても簡単に作れます

于 2009-07-16T18:42:19.227 に答える
4

PHP で使用できるグラフ作成ライブラリもいくつかあり、作業を簡素化できます。JPGraphは優れた (無料ではない) ものです。

于 2009-03-14T07:44:44.207 に答える
1

gd2についてはわかりませんが、gdで同様のことを行ったことがありますが、それほど難しくはありませんでした.

http://www.php.net/に移動して、次のようなものを検索します

  • 画像作成
  • イメージライン
  • 画像文字列

他のソリューションほど派手ではありませんが、画像を生成するため、すべてのブラウザーで動作します。(オオヤマネコを除く... :-) )

/ヨハン


更新:このタイプの写真には jpeg を使用しないでください。jpeg アーティファクトは非常に厄介です。png の方が優れたソリューションです。

于 2009-03-14T09:09:08.917 に答える