SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZineニュース

[PHPプロ!] GDライブラリを使わない棒グラフのサンプル

  • このエントリーをはてなブックマークに追加

  • このエントリーをはてなブックマークに追加

AnyExample.comにてPHPを使ってHTML/CSSベースの棒グラフを生成する関数のサンプルが掲載されています。

 AnyExample.comにてPHPを使ってHTML/CSSベースの棒グラフを生成する関数のサンプルが掲載されています。

 このサンプルの関数で生成されるグラフは、libgdといったライブラリを必要とせずPHP4またはPHP5以上でCSSをサポートしているブラウザがあれば生成表示することが出来ます。

 グラフを生成するサンプル関数のコードですが以下のようになっています。

<?php 
function ae_bar_html(&$values, $height=400, $color='black', $width='')
{
    $max = -1;
    
    foreach($values as $k=>$v)
        if (abs($v) > $max)
            $max = abs($v);
    
    if ($max != 0)
        $kf = $height / $max;
    else
        $kf = 0;
    
    if ($width != '')
        $width = "width: {$width}px; ";
 
    $out = "<tr style='vertical-align: bottom;'>";    
    foreach($values as $k=>$v)
    {
        $bar_h = abs(round($v*$kf));
        $out .= "<td style='{$width}padding-top: 0; margin-top: 0;";
        $out .= " height: {$height}px; border-bottom:"
                . " {$bar_h}px solid {$color}; text-align: center;'>";
        $out .= "{$v}</td>";
    }
    $out .= '</tr>';
    
    
    $out .= "<tr>";    
 
    foreach($values as $k=>$v)
        $out .= "<td style='text-align: center'>{$k}</td>";
        
    $out .= "</tr>";
    return $out;
}
 
?>

 この関数の使い方は以下のようになります。

<?php
 
// データを読み込む
// 配列に値をセット
// サンプルは日付 => 訪問者数 
$visitors = array('1.1.2007'=>450, '1.2.2007'=>420, 
                  '1.3.2007'=>440, '1.4.2007'=>430,
                  '1.5.2007'=>421, '1.6.2007'=>318,
                  '1.7.2007'=>234);
?> 
<table> 
<?php
echo ae_bar_html($visitors, '300', 'red', 100);
?> 
</table>

 このサンプルae_bar_html関数には引数が四つあり、第一引数はグラフの値と項目名になる配列、第二引数はグラフの最大値でデフォルトは400px、第三引数は色でデフォルトは黒、第四引数は幅でデフォルトは自動、となっています。

 また、このae_bar_html関数が出力するHTMLではインラインCSSを使って装飾を行っています。このやり方があまり好まないという方のためにもう一つのサンプル関数が掲載されています。

<?php 
function ae_bar_css(&$values, $height=400, $css_prefix='')
{
    $max = -1;
 
    foreach($values as $k=>$v)
        if (abs($v) > $max)
            $max = abs($v);
    
    if ($max != 0)
        $kf = $height / $max;
    else
        $kf = 0;
 
    $out = "<tr class='{$css_prefix}barvrow'>";    
    foreach($values as $k=>$v)
    {
        $bar_h = abs(round($v*$kf));
        $out .= "<td style='border-bottom-width: {$bar_h}px'>{$v}</td>";
    }
    $out .= '</tr>';
    
    
    $out .= "<tr class='{$css_prefix}bartrow'>";    
 
    foreach($values as $k=>$v)
        $out .= "<td>{$k}</td>";
        
    $out .= "</tr>";
    return $out;
}
 
?>

 このae_bar_css関数とよばれるサンプルではインラインCSSを使用していないので、自分好みで装飾を行うことが出来ます。また基本的なCSSも以下のように紹介されています。

table.chart tr.barvrow td 
{ 
    width: 40px;
    height: 400px; 
    vertical-align: bottom;
    border-bottom-color: red;
    border-bottom-style: solid;
    text-align: center; 
}
table.chart tr.bartrow td 
{
    text-align: center 
}

 興味のある方は参考にしてはいかがでしょうか。(PHPプロ!

関連リンク

関連ニュース

転載元

 PHPプロ!:最新のPHPニュース

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
この記事の著者

PHPプロ!(PHPプロ!)

PHPプロ!」は、アシアル株式会社が運営するPHP開発者のためのポータル&コミュニティサイトです。同サイトでは、PHP最新ニュースや、困ったときのQ&A掲示板、初心者向けのPHP講座、PHP中級者のためのTIPSメーリングリスト、中・上級者向けの技術ノウハウ満載のPHPプロ!マガジンの提供など、PHP開発...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1318 2007/05/09 11:27

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング