■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_ticksとx_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(グラフデータファイル)
|