グラフサンプル (No.-26) グラフ名:折れ線グラフ 画像名:sample54.gif CGI名:sample54.pl
sample54.gif


【要点】
(1)折れ線グラフを描く
   GD::Graph::lines;
   $my_graph = new GD::Graph::lines();
(2)表示データをファイルから読み込む(データセットには、X軸目盛の値が
   設定さていない例です。X軸目盛の値の自動計算。)
@data =  read_data("sample54.dat") #データセット
	or die "Cannot read data from sample54.dat";
・
・
・
sub read_data #ファイル(CSV)読み込みルーチン
{
・
・
・
	return @d; #返す値は、無名配列であること
}

(3)Y軸の目盛を描く(No21 sample41.gif-(2)参照)
  y_min_value => 0,
  y_max_value => 2,
  y_tick_number => 8,
  y_label_skip => 4,
(4)X軸の目盛を描く
  x_tick_number => 'auto', # 'auto'の場合、X軸を軸目盛の値ではなく、
           #実際のX軸の値に基づいて計算された目盛の値が表示されます。
           #データセットの中には、軸目盛の値は指定しません。
           # 'auto'でなく数値を指定すると、データセットの目盛の値
           #が目盛の表示されます。
           #又、x_tick_numberを指定しないと、データセットの目盛の値
           #になります。一般的にはx_tick_numberを指定しません。
  x_label_skip => 2,  #指定した数毎にX軸目盛の値を表示します。
(5)グラフキャンバスの軸の外枠線を線で描かない-箱状にしない
  box_axis => 0, # 0:軸を箱状にしません。軸はY軸、X軸の基線
                 # のみが描かれます。
                 # 1:軸を箱状にします。軸の外枠線を線で描
                 # きます。デフォルトは1。
(6)軸ラベルの位置を決める
  x_label_position => 1/2, # 0:左寄せ 1:右寄せ 1/2:中央揃え。
                         #0〜1の値で指定します。デフォルト: 3/4 。
(7)グラフキャンバスの余白を取る
  r_margin => 15, #左(Left)マージン
(8)X軸ラベルの表示方法
  'x_labels_vertical'=> 1, #X軸ラベルが垂直に表示されます。
                           #長い文字列の場合用いる。
sample54.pl

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

print STDERR "Processing sample54\n";

@data = read_data("sample54.dat") 
	or die "Cannot read data from sample54.dat";

$my_graph = new GD::Graph::lines();

$my_graph->set( 
	x_label => 'Wavelength (nm)',
	y_label => 'Absorbance',
	title => 'Numerical X axis',

	y_min_value => 0,
	y_max_value => 2,
	y_tick_number => 8,
	y_label_skip => 4,

	x_tick_number => 'auto',
	x_label_skip => 2,

	box_axis => 0,
	line_width => 2,
	x_label_position => 1/2,
	r_margin => 15,

	x_labels_vertical => 1,

	transparent => 0,
);

$my_graph->set_legend('Thanks to Scott Prahl');
$my_graph->plot(\@data);
save_chart($my_graph, 'sample54');


sub read_data
{
	my $fn = shift;
	my @d = ();

	open(ZZZ, $fn) || return ();

	while ()
	{
		chomp;
		my @row = split;

		for (my $i = 0; $i <= $#row; $i++)
		{
			undef $row[$i] if ($row[$i] eq 'undef');
			unshift @{$d[$i]}, $row[$i];
		}
	}

	close (ZZZ);

	return @d;
}


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

最終更新日:2005.1.17