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


【要点】
  このグラフは、No26 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 #ファイル(SVC)読み込みルーチン
{
・
・
・
	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 => 14, #X軸目盛について、最小100
  x_min_value => 100,  #最大800で目盛の数14
  x_max_value => 800,  #を指定しています。
(5)軸の線を描く、描かない、を制御する
  x_ticks  => 0, # 1:trueならば、X軸に目盛が描かれます。
                  #x_long_ticksx_tick_lengthの値により描かれます。
                  # 0:X軸に目盛を描かない。

  x_long_ticks => 1 #true(=1)の場合、目盛りの線を軸いっぱいに描きます。
                    #デフォルトは0です。
                    #x_long_ticksが0の場合、x_tick_length
                    #の値で描かれます。
                    #x_tick_lengthのデフォルトは4です。
  x_tick_length => -4, #上記参照。
(6)X軸の目盛を描く(ここの指定はx_ticks=0のため無意味)
  x_label_skip => 2,  #指定した数毎にX軸目盛の値を表示します。
                      #Y軸の場合、y_label_skipで指定します。
  x_tick_offset => 2, #最初の出力目盛をx_tick_offsetの値分飛ばします。
                      #x_label_skipとの組み合わせにより、制御します。
sample56.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 sample56 (experimental)\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 => 14,
	x_min_value => 100,
	x_max_value => 800,
	x_ticks     => 1,
	x_tick_length => -4,
	x_long_ticks => 1,
	x_label_skip => 2,
	x_tick_offset => 2,

	no_axes => 1,
	line_width => 2,
	x_label_position => 1/2,
	r_margin => 15,

	transparent => 0,
);

$my_graph->set_legend('Thanks to Scott Prahl and Gary Deschaines');
$my_graph->plot(\@data);
save_chart($my_graph, 'sample56');


sub read_data
{
	my $fn = shift;
        local(*ZZZ);
	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