グラフサンプル (No.-11) グラフ名:棒グラフ 画像名:sample16.gif CGI名:sample16.pl
sample16.gif


【要点】
(1)縦棒グラフ、横棒グラフ
   GD::Graph::bars;    #縦棒グラフ
   GD::Graph::hbars;   #横棒グラフ
  for my $my_graph (GD::Graph::bars->new, GD::Graph::hbars->new)
(2)Y軸目盛を描く
  y_max_value   => 35,  #Y軸目盛の最大値
  y_min_value   => -15, #Y軸目盛の最小値
  y_tick_number => 10, #Y軸目盛の数
  y_label_skip  => 2, #Y軸目盛を2つ毎に表示
  overwrite => 1,  #  0:違うデータセットの棒は
                   #  隙間無く表示(デフォルト)
                   #  1:互いの前に重なる
                   #  2:上に積み重ね(この場合
                   # cumulateを使用する)
  dclrs => [ ( green lred ) ], #棒の色をグリーンと赤にします
  axislabelclr  => 'black', #軸目盛の値の色を黒とします

(3)プラス・マイナス棒(バー)の描き方
  zero_axis_only  => 0, # 0:デフォルト。1を読んで下さい。
                        # 1:Yの値が0の軸が描かれ(実際は描かれない)
                        # グラフの下の軸が描かれません。
                        # Xの値のラベルはYの値が0の軸に置かれます。
                        # このグラフではzero_axis_onlyは、
                        #省略しても良い。
(4)凡例の配置を決める
  legend_placement    => 'RB', #凡例をキャンバスの右(R)の下(B)に置きます。
                 #2つの英字の組み合 XYです。
                 # X:位置は、B(Bottom) または R(Right)
                 # Y:揃えは次のとおり。
                 # L(Left=左寄せ)        R(Right=右寄せ)
                 # C(Center=中央揃え)    T(Top=上詰め)
                 # B(Bottom=下詰め)  デフォルトは、'BC' (下の中央揃え) 

(5)Y軸目盛の値を編集する
  y_number_format => \&y_format, # \&y_formaの&y_formatは、上の
                        #サブルーチンをコール。先頭に\を付けます。
(6)X軸ラベルの位置を決める
 x_label_position => 1/2, # 0:左寄せ 1:右寄せ 1/2:中央揃え。
                          #0〜1の値で指定します。デフォルト: 3/4 。
  (参考)Y軸の場合
   y_label_position => 1, # 0:下詰め 1:上詰め 1/2:中央揃え。
                          #0〜1の値で指定します。デフォルト: 1/2 。
sample16.pl

chdir("C:\\Inetpub\\wwwroot\\uriage"); #カレントディレクトリ指定(IISの場合)
use lib 'C:/Inetpub/wwwroot/uriage'; #GD::Graphライブラリ格納フォルダ GD (固定)の場所
#
use strict;
use GD::Graph::bars;
use GD::Graph::hbars;
require 'save.pl';

my @data = ( 
    [ qw( 1st 2nd 3rd 4th 5th 6th 7th 8th 9th ) ],
    [    5,   12,undef,   33,   19,    8,    5,    15,    21],
    [   -6,   -5,   -9,   -8,  -11, -9.3,undef,    -9,   -12]
);

my $refit = 4;

sub y_format
{
    my $value = shift;
    my $ret;

    if ($value >= 0)
    {
	$ret = sprintf("\$%3d", $value * $refit);
    }
    else
    {
	$ret = sprintf("-\$%3d", abs($value) * $refit);
    }
}

my @names = qw/sample16 sample16-h/;

for my $my_graph (GD::Graph::bars->new, GD::Graph::hbars->new)
{
    my $name = shift @names;
    print STDERR "Processing $name\n";

    $my_graph->set( 
	x_label             => 'Day',
	y_label             => 'AUD',
	title               => 'Credits and Debits',
	y_max_value         => 35,
	y_min_value         => -15,
	y_tick_number       => 10,
	y_label_skip        => 2,
	overwrite           => 1, 
	dclrs               => [ qw( green lred ) ],
	axislabelclr        => 'black',
	legend_placement    => 'RB',
	zero_axis_only      => 0,
	y_number_format     => \&y_format,
	x_label_position    => 1/2,

	transparent         => 0,
    );

    $my_graph->set_legend( 'credits', 'debets' );
    $my_graph->plot(\@data);
    save_chart($my_graph, $name);
}

(参考)
  ●本ソースコードの1〜3行目(挿入) 1 chdir("C:\Inetpub\wwwroot\uriage"); #カレントディレクトリ指定(IISの場合) 2 use lib 'C:/Inetpub/wwwroot/uriage'; #GD::Graphライブラリ格納フォルダ GD (固定)の場所 3 # Windows IIS 走行用に元ソースに挿入   ●>save.pl(グラフ画像保存ルーチン)

最終更新日:2005.1.17