GD::Graphモジュール(日本語チョウ訳) Ver.1.32

by Hippo2000(2001/2/10)

GD::Graphモジュールなのです。GIFgraphの後継にあたります。GD自体の機能アップもあってTrueTypeを利用することにより。日本語も使えるようにもなりました。(^^)v。これについてはGD::Textをごらんください。

原本の著作権はMartien Verbruggen 氏がお持ちです(詳しくは著作権情報を見てください)。Martien Verbruggen 氏からは、メールで了解をいただきました。Thank you, Mr Verbruggen!

内容等が間違っていたら修正します。ご連絡ください。

GD::Graphには以下のサブクラスがあります

モジュール 説 明
GD::Graph::Colour GD::Graphで使われる色操作ルーチン
GD::Graph::FAQ よく聞かれる質問
GD::Graph::Data GD::Graphのためのデータセットのカプセル化
GD::Graph::Error GD::Graph クラスのためのエラー・ハンドリング


名前

GD::Graph - Perl5のためのグラフ作成モジュール


概要

use GD::Graph::モジュール名;


説明

GD::Graph とは、GDモジュールを使ってグラフ作成するPerl5モジュールです。以下の軸ありグラフのためのクラスが定義されています:

GD::Graph::lines
折れ線グラフを作成します。
GD::Graph::bars
棒グラフを作成します。
GD::Graph::points
データを点で表すグラフを作成します。
GD::Graph::linespoints
折れ線と点の組み合せ。
GD::Graph::area
データを折れ線グラフの領域でデータを表現するグラフを作成します。
GD::Graph::mixed
上記のグラフを組み合わせた混合グラフを作成します。現在、非常に限定されものでしかありません。個々のグラフのためのオプションのなかには、うまく動かないものがあります。混合グラフでの複数の棒グラフはうまく表示できません。

さらに以下のタイプもあります:

GD::Graph::pie
円グラフを作成します。

使用例

ディストリビューションでのsamplesディレクトリをご覧になり、そこのMakefileをお読みください。


使用法

X軸の項目とデータセットが入った配列の配列を作成します。各配列のサイズはすべて同じにしてください。そうしないとGD::Graphは文句を言って、グラフを作成するのを止めてしまいます。

  @data = ( 
    ["1st","2nd","3rd","4th","5th","6th","7th", "8th", "9th"],
    [    1,    2,    5,    6,    3,  1.5,    1,     3,     4],
    [ sort { $a <=> $b } (1, 2, 5, 6, 3, 1.5, 1, 3, 4) ]
  );

データセットのなかにデータがない箇所があれば、undefを使うことができます。その点は飛ばされます。

作りたい種類のグラフnew演算子を呼び出すことにより、新しいGD::Graphオブジェクトを作成します。(chartにはbars, lines, points, linespoijnts,mixedそしてpieが指定できます)

  $graph = GD::Graph::chart->new(400, 300);

オプションを設定します

  $graph->set( 
      x_label           => 'X Label',
      y_label           => 'Y label',
      title             => 'Some simple graph',
      y_max_value       => 8,
      y_tick_number     => 8,
      y_label_skip      => 2 
  );

グラフを出力します。

  my $gd = $my_graph->plot(\@data);

そこであなたのGDがそのバージョンでファイルに保存するために可能にしていることをします。1.19よりも古いGDのバージョンでは、以下のようにすることができます。

  open(IMG, '>file.gif') or die $!;
  binmode IMG;
  print IMG $gd->gif;
  close IMG;

そしてより新しい(1.20以上)では以下のように書くでしょう

  open(IMG, '>file.png') or die $!;
  binmode IMG;
  print IMG $gd->png;

あるいは

  open(IMG, '>file.gd2') or die $!;
  binmode IMG;
  print IMG $gd->gd2;

そしてもちろん、短いバージョンでもできます(それぞれはGDがサポートするエクスポートされた関数です)

  print IMG $my_graph->plot(\@data)->gif;
  print IMG $my_graph->plot(\@data)->png;
  print IMG $my_graph->plot(\@data)->gd;
  print IMG $my_graph->plot(\@data)->gd2;

もしgifまたはpngが使うかどうかを「知る」ことを要求しないように書きたければ、以下のようにすることができます。

  if ($gd->can('png')) { # ほんにゃらはんにゃら }

もしくは便宜的なメソッドexport_formatを使うことができます。

  my $format = $my_graph->export_format;
  open(IMG, ">file.$format") or die $!;
  binmode IMG;
  print IMG $my_graph->plot(\@data)->$format();
  close IMG;

もしくはCGIスクリプト用:

  use CGI qw(:standard);
  #...
  my $format = $my_graph->export_format;
  print header("image/$format");
  binmode STDOUT;
  print $my_graph->plot(\@data)->$format();

(そこにメソッド名があることを意味しているとコンパイラに判定させるのを助けるために、$formatの後ろの括弧は必要です。)


メソッド


メソッド(全グラフ共通)

GD::Graph::chart->new([width,height])
オプションで指定された幅(width)と高さ(height)で新しいオブジェクト$graphを作成します。デフォルトでは width = 400, height = 300です。chartbars, lines, points, linespoints, area, mixed または pieのいずれかが指定できます。
 
$graph->set_text_clr(colour name)
文字の色を指定します。これにより表題(title)、ラベル(label)、軸ラベル(axis label)の色を指定された色に設定します。オプションの textclr, labelclr, axislabelclr もご覧ください。
 
$graph->set_title_font(font specification)
グラフのタイトルに使われるフォントを設定します。フォント をご覧ください。
 
$graph->plot(\@data)
グラフを描画し、GD::Imageオブジェクトを返します。
 
$graph->set(attrib1 =gt value1, attrib2 =gt value2 ...)
グラフのオプションを設定します。オプションセクションをご覧ください。
 
$graph->get(attrib1, attrib2)
属性の値のリストを返します。スカラコンテキストでは最初の属性の値だけを返します。
 
$graph->gd()
描画に使われようとしているGD::Imageオブジェクトを取得します。plotメソッドの前でも後でも、自分自身で描画するために、これを呼ぶことができます。

もしplotメソッドを呼ぶ前にGD::Imageオブジェクトに描画するのであれば、背景色を保証すること、透明色の設定の設定について責任を持たなければならないことに注意してください。

$graph->export_format()
利用しているGDライブラリのexport formatを問い合わせます。スカラ・コンテキストでは'gif'、'png'または未定義のいずれかを返します。これは大抵の人が使うには十分でしょう。リスト・コンテキストでは現在のバージョンのGDによってサポートされているすべてのフォーマットのリストを返します。これはクラスまたはオブジェクト・メソッドとして呼び出すことができます。
 
$graph->can_do_ttf()
もしGDライブラリがTrue Typeフォントをサポートしているのであればtrueを返します。そうでなければFalseです。これもクラスまたはオブジェクト・メソッドとして呼び出すことができます。

メソッド(円グラフ)

$graph->set_label_font(font specification)
 
$graph->set_value_font(font specification)
円グラフのラベルや値のフォントを設定します。 フォント をご覧ください。

メソッド(軸ありグラフ)

$graph->set_x_label_font(font specification)
 
$graph->set_y_label_font(font specification)
 
$graph->set_x_axis_font(font specification)
 
$graph->set_y_axis_font(font specification)
 
$graph->set_values_font(font specification)
X軸、Y軸のラベル、X軸、Y軸の値ラベル、データポイントの上に出力される値のフォントを設定します。 フォント をご覧ください。
$graph->get_hotspot($dataset, $point)
実験的: データセットでのポイントのための座標の仕様を返します。リストを返します。もしポイントが指定されなければ、データセットでのすべてのポイントのための配列リファレンスのリストを返します。もしデータセットも指定されなければ、各データセットのための配列リファレンスのリストを返します。ホットスポットをご覧ください。

オプション


オプション(全グラフ共通)

width, height
キャンバスの幅、高さをピクセルで表わします。デフォルトは 400 x 300です。注意:現時点では、これは読み込みのみ可能です。グラフの大きさを指定したい場合には、newメソッドでしなければいけません。
 
t_margin, b_margin, l_margin, r_margin
キャンバスの上(Top)、下( Bottom)、左( Left)、右(Right)のマージン。これらのマージンは空白になります。デフォルト:すべて0です。
logo
ロゴ・ファイルの名前。一般的にあなたのGDのバージョンが出力するイメージのフォーマットと同じでなければなりません。現時点ではgdフォーマットファイルやxpmファイルの読込はサポートしていません。デフォルトではロゴはありません
 
logo_resize, logo_position
ロゴの大きさの倍率と、ロゴを画面のどこに置くかを指定します。logo_positionに設定できるのは、'LL', 'LR', 'UL', 'UR'です。(下(lower)/上(upper)と左(left)/右(right)) デフォルト:'LR'(=右下)
 
transparent
trueが設定されると、作成されるイメージの背景色が透明になります。 (オプションbgclr もご覧ください) デフォルト:1。
interlaced
trueが設定されると、作成されるイメージがインターレース化されます。デフォルト:1。

bgclr, fgclr, boxclr, accentclr, shadowclr
グラフの背景色(Background),前景色(foreground)(軸とグリッド), 軸の箱の色、アクセント(accent)(棒グラフ、領域グラフそして円の外枠)、影(現在は棒グラフのみ)を描画する色を指定します

boxcolorを除いてすべての色は で記述されているような正しい値でなければなりません。boxcolorが未定義であると、箱は塗りつぶされません。

shadow_depth
影の深さ。正の値であれば右/下の影、負の値であれば左/上の影です。0は影がありません(デフォルト)。shadowclrとbar_spacing オプションもご覧ください。
 
labelclr, axislabelclr, legendclr, valuesclr, textclr
グラフのテキストに使われる色:ラベル(軸または円のためのラベル)、軸ラベル(誤称。軸また円の扇型に沿って出力される値)、凡例のテキスト、表示される値のテキスト、そしてそれら以外のすべてのテキスト

すべての色は で記述されているような正しい値でなければなりません。

dclrs (datacoloursの略)
棒、線、点(マーカー)、円グラフの扇形の色を制御します。これは GD::Graph::colour で定義されている色の名前の配列へのリファレンスでなければなりません。(利用できる名前についてはperldoc GD::Graph::colourしてください)
    $graph->set( dclrs => [ qw(green pink blue cyan) ] );

最初(5番目、9番目)のデータは緑(green)に、次はピンク(pink)などとなります。デフォルト:[ qw(lred lgreen lblue lyellow lpurple cyan lorange) ]

borderclrs
これは棒グラフ・データセットの境界線を制御します。dclrsと同様に、これはGD::Graph::colour で定義されている色の名前の配列へのリファレンスです。

背景色と同じ色に境界線の色を設定すると、棒がX軸上で"浮かんでいる"ように見えます。例えば(背景色が白だったとします)

    $graph->set( dclrs => [ qw(white cyan cyan) ] );
    $graph->set( borderclrs => [ qw(white black black) ] );

これは黒い線のついたcyan色のバーが真ん中を通っているように見えます。これは平均値をもった範囲をしめすのに理想的です。

cycle_clrs
もしtrue値が設定されると、棒は点毎ではなくデータセットごとにdclrsから色を持ってきます。色の並びは各データセットと同じになります。複数のデータセットを描画するのであれば、これが気持ちの悪い影響を与えるかもしれないことに気をつけてください。もしこれが1以上の値に設定されていると、棒の境界色(border colour)はborderclrs の色で繰り返されます。
 
accent_treshold
本当の色ではありませんが、これは見た目を制御します。棒上のアクセントは棒の幅がピクセルで、この数値よりも大きいときにだけ描画されます。領域の中のアクセントは点の水平の距離が、この数値よりも大きいときにだけ描画されます。デフォルトは4です。

オプション(軸ありグラフ)

棒、折れ線、点、点付折れ線、混合、そしてグラフのためのオプションです。

long_ticks, tick_length
long_ticksがtrueならば、目盛が軸と同じ長さで描かれます。そうでなければ、tick_length の長さで描かれます。もしtick_length がマイナスの値であれば、目盛は軸の外に描かれます。 デフォルト: long_ticks = 0, tick_length = 4.。

これらの属性は_long_ticks, y_long_ticks, x_tick_length そして y_tick_lengthによってx軸、y軸、別々にしていできます。

x_ticks
x_ticksがtrueならば、X軸に目盛が描かれます。目盛はlong_tickstick_lengthの値を基にして描かれます。デフォルト: 1。
 
y_tick_number
Y軸のための出力される目盛の数。y_label_skip と一緒に使って、Y軸の目盛の見た目を制御します。デフォルト: 5。
 
y_number_format
これは文字列またはサブルーチンへのリファレンスで指定します。文字列であれば、sprintfの最初の引数として取られ、2番目の引数には値が入ります。:
    $label = sprintf( $s->{y_number_format, $value );

サブルーチンへのリファレンスであれば、値を引数に実行されます。:

    $label = &{$s->{y_number_format}}($value);

これはとても便利です。例えば、正しい位置に−符号がつく通貨の形式にしようと思ったときには以下のようにします。:

    sub y_format
    {
        my $value = shift;
        my $ret;
        if ($value >= 0)
        {
            $ret = sprintf("\$%d", $value * $refit);
        }
        else
        {
            $ret = sprintf("-\$%d", abs($value) * $refit);
        }
        return $ret;
    }
    $my_graph->set( 'y_number_format' => \&y_format );

(もちろんもっと短く、簡単にできることはわかっています。)

デフォルト: undef

x_label_skip, y_label_skip
X軸の目盛は、毎x_label_skip番目が表示されます。 Y軸の目盛は毎y_label_skip番目が表示されます。デフォルト: 両方とも1。
x_tick_offset
x_label_skipが使われると、これは最初に出力する前にラベルをx_tick_offsetの値分、飛ばします。例をあげてみましょう。以下のようなXラベルのシリースがあったとします:
  qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)

そしてx_label_skip を3に設定したとすると、X軸の目盛はJan, Apr, Jul, Oct そして Decとなります。これが常に欲しいものではありません。もしx_tick_offsetを1に設定するとFeb, May, Aug, Nov そして Decとなります。もし2に設定するとMar, Jun Sep そして Decとなります。そして最後のものが一番よいように見えます。6と5の組み合わせも月にはあっているようです。

x_tick_offset のための値は周期的であることに注意してください。つまり整数nについてx_tick_offset + n * x_label_skip.と同じ効果があるということです。

x_all_ticks
x_label_skipに値が設定されていたとしても、Xの目盛をすべての表示します。デフォルト: 0.
x_label_position
X軸ラベル(タイトル)の位置を制御します。この値は、0から1までの値でなければいけません。0は左寄せ、1は右寄せ、1/2は中央揃えになります。デフォルト: 3/4
y_label_position
Y軸ラベル(タイトル)の位置を制御します。0から1までの値でなければいけません。0は下詰め、1は上詰め、1/2は中央揃えになります。デフォルト: 1/2
x_labels_vertical
trueであれば、X軸ラベルが垂直に表示されます。ラベルが非常に長い場合、とても便利ですデフォルト: 0
x_plot_values, y_plot_values
trueであれば、X軸、Y軸の目盛の値が目盛のそばに表示されます。x_label_skip, y_label_skipもご覧ください。デフォルト: 両方とも1
box_axis
trueであれば、軸を箱状にします。デフォルト: 1
two_axes
2つの別々の軸を最初と2番目のデータセットに使用します。最初のデータセットは左の軸に、2番目のデータセットは右の軸が使われます。trueであれば、2つ以外のデータセットを使おうとするとエラーになります。デフォルト: 0.
zero_axis
trueであれば、Yの値が0の軸が描かれます。マイナスの値があり、0がどこになるかをはっきりさせたい場合に便利です。(zero_axis_onlybox_axes もご覧ください)。 デフォルト: 0.
zero_axis_only
trueであれば、Yの値が0の軸が描かれ(zero_axis をご覧ください)、グラフの下の軸が描かれません。Xの値のラベルはYの値が0の軸に置かれます。デフォルト: 0.
y_max_value, y_min_value
Y軸に表示される最大値、最小値。two_axesがtrueであれば、y1_max_value,y1_min_value(左軸)、y2_max_value,y2_min_value(右軸)が、これらよりも優先されます。

範囲 (y_min_value〜y_max_value) はすべてのデータ値を含んでいなければなりません。そうでなければGD::Graphはメッセージとともに死にます(die)。

棒グラフ、面グラフでは、範囲 (y_min_value〜y_max_value) に0が入っていなければなりません。そうでなければ、グラフを作成する前に値が調整されます。

デフォルト: データセットから計算します。

axis_space
軸と目盛の値文字との間の空白にされる領域。デフォルト: 4。
text_space
テキスト要素とグラフとの間に開けられる空間(テキスト要素はタイトルと軸のラベル)。

デフォルト:8

cumulate
この属性がtrue値に設定されると、データセットは積算されます。つまり互いの上に積み重なります。この副作用としてoverwriteがtrue値に設定されます。

注意:これは現在、棒グラフ、面グラフにのみ機能します。

データセットの負の値が入っていると、このオプションを設定するとおかしなことになります。もちろんグラフそのものがまったく無意味になるでしょう。

overwrite
0であれば、違うデータセットの棒は隙間なく表示されます。1であれば互いの前に、2であれば上に積み重ねて表示されます。デフォルト: 0

注意:積み重ねセットを生成するためにoverwriteを2に設定するというのは廃棄対象です。GD::Graphの将来のバージョンではなくなります。代わりにcumulate属性をご覧ください。

correct_width
もしこれがtrue値に設定され、x_tick_number がfalseであれば、グラフの幅は各データポイントが正確にピクセルでの幅の整数値を持つように再計算されます。おそらくはこれをもてあそぼうとは思わないでしょう。

この値がtrueのとき、データポイントの数が確実にグラフの描画領域ピクセルの数よりも小さくする必要があります。水平方向の大きさが小さすぎるというエラーを得るのであれば、手動でこれをオフにするか、棒グラフ以外のタイプを利用するように考えなければなりません。

デフォルト:棒グラフでは1、混合グラフでは実行時に計算、それ以外は0。


データポイントでデータポイントの値を描画

場合によっては、明確にするためにデータポイントや棒グラフの値をデータポイントの上に値を描画したいかも知れません。GD::Graphはこれを一般的な方法で、あるいは1つポイントを落としてさえ制御することを可能にしています。

show_values
これを1にすると各データポイントの値が点または棒そのものの上に表示されます。テキストのために十分な空間があるということを保証するような努力は何も行われません。

これをGD::Graph::Data オブジェクト、あるいはplotメソッドに渡したデータ・オブジェクトと同じ形、同じ次元の配列リファレンスに設定してください。このオプションの理由は、それはあなたのデータセットのコピーを作ることを可能にします。そして選択的に描画できない点をundefにします。

  my $data = GD::Graph::Data->new( 
        [ [ 'A', 'B', 'C' ], [ 1, 2, 3 ], [ 11, 12, 13 ] ]);
  my $values = $data->copy;
  $values->set_y(1, 1, undef);
  $values->set_y(2, 0, undef);
  $graph->set(show_values => $values);
  $graph->plot($data);

デフォルト: 0.

values_vertical
もしtrue値であれば、値は水平にではなく垂直に出力されます。これは長い数字のときに便利でしょう。デフォルト:0。
values_space
データポイントと値を出力するときに挿入される空白。デフォルト:4。
values_format
表示のために値をどのようにフォーマットするか。詳細はy_number_format をご覧ください。デフォルト:undef。

オプション(数値X軸をもつグラフ)

まず最初に:GD::Graphは数値のX軸はあるべき姿でサポートしていません。X軸のデータはすべて等しく空間が取られます。その上で:数値のX軸をもったグラフの作成をなんとかサポートをしています。Scott Prahlに感謝します。オプション x_tick_numberが定義された値であれば、GD::GraphはXのデータを数値として扱おうとします。

特殊なオプション:

x_tick_number
'auto'であれば、GD::GraphはX軸を、実際のX軸の値に基づいて、よりよい方法で表示しようとします。もし数値が設定されれば、目盛の数になります。undefであれば、GD::GraphはXデータをラベルとして扱います。 デフォルト: undef。
x_min_value, x_max_value
X軸に使われる最小値、最大値. デフォルト: 自動的に計算されます 。
x_number_format
y_number_format をご覧ください。
x_label_skip
y_label_skip をご覧ください。

オプション(棒を持つグラフ)

bar_spacing
棒と棒との間を空間のピクセル数。たいていの場合はうまくいきますが、プラットホームによっては、1が0に切り捨てられることがあります。デフォルト: 0

オプション(折れ線を持つグラフ)

line_types
折れ線(lines)、点付折れ線(linespoints)グラフでの線の種類。数値の配列へのリファレンスで指定しなければなりません:
    $graph->set( line_types => [3, 2, 4] );

使える線の種類は 1: 実線(solid)、 2: ダッシュ(dashed) 3: 点線(dotted) 4: 点線(dot-dashed)

デフォルト: [1] (常に実線)

line_type_scale
折れ線でのダッシュの長さを制御します。デフォルト: 6.。
line_width
折れ線(lines)、点付折れ線(linespoints)グラフでの線の幅をピクセル値で。デフォルト: 1。

オプション(点を持つグラフ)

markers
点(points)、点付折れ線(linespoints)グラフで使われる点(マーカー)の順番を制御します。数値の配列へのリファレンスで指定します:
    $graph->set( markers => [3, 5, 6] );

使える点(マーカー)は: 1: 塗りつぶされた四角(filled square), 2: 四角(open square), 3: 十字(horizontal cross)、 4: 対角線の十字(diagnal cross), 5: 塗りつぶされた菱形(filled diamond), 6: 菱形(open diamond), 7: 塗りつぶされた丸(filled circle), 8: 丸(open circle)です。

デフォルト: [1,2,3,4,5,6,7,8]

marker_size
点(points)、点付折れ線(linespoints)グラフで使われる点(マーカー)の大きさをピクセルで指定します。デフォルト: 4。

オプション(混合グラフ)

types
グラフの種類を、データセットと同じ順番でもった配列へのリファレンス。以下のように指定できます:
  $graph->set( types => [qw(lines bars points area linespoints)] );
  $graph->set( types => ['lines', undef, undef, 'bars'] );

undefもしくはわからない値であればdefault_type が設定されます。

デフォルト: すべて default_type に設定されます。

default_type
種類が設定されていないか、わからない値が設定されているデータセットを描くときのグラフの種類。

デフォルト: lines (折れ線グラフ)


凡例(軸ありグラフのみ)

現在、凡例は最低限しかサポートしていません。

メソッド

$graph->set_legend(@legend_keys);
凡例のキーを設定します。@legend_keys の要素はplot() に指定されるデータセットに対応します。

キーが undef または空文字列であれば、凡例の要素は飛ばされます。

$graph->set_legend_font(font name);
凡例の文字列のフォントを指定します。 (FONTSをご覧ください) デフォルト: GD::gdTinyFont.

オプション

legend_placement
凡例を置く場所。 2つの文字の組み合わせになります。: 'B[LCR]|R[TCB]'。 最初の文字は位置(Bottom または Right)、2番目の文字がどちら寄せにするか(Left(=左寄せ), Right(=右寄せ), Center(=中央揃え), Top(=上詰め), Bottom(=下詰め))を示します。デフォルト: 'BC' (=下の中央揃え)

凡例の位置が下(B)であれば、そうなるように計算して「知的な」折り返しを行います。もし凡例の位置が右(R)であれば、すべての要素が上下に並びます。

(訳者注:最初の文字がBだった場合には凡例の項目が横に、Rだった場合には縦に並びます。)

legend_spacing
凡例の要素のまわり、凡例の「マーカー」と文字の間のピクセル数。デフォルト: 4
legend_marker_width, legend_marker_height
凡例の「マーカ−」の幅(width)と高さ(height)のピクセル数。デフォルト: 12, 8
lg_cols
何らかの理由で下に置いた凡例で列数を特定の数にする必要があるときには、これが使えます。 デフォルト: 計算します。

オプション(円グラフ)

3d
trueであれば、円グラフは3Dで描かれます。デフォルト: 1
pie_height
3dがtrueだったときの円グラフの厚み。 デフォルト: 0.1 × 高さ
start_angle
最初のデータを描画する開始角度。0は6時の位置(真下) デフォルト: 0.
suppress_angle
もし円グラフの扇型がこの角度(度で)よりも小さければ、それへのラベルは描画されません。デフォルト:0。
label
円グラフの下に出力されるラベル。デフォルト:undef。

このモジュールでは、オプションでの色(colour)の書き方はすべてclrと省略しています。その大きな理由は、同じ言葉に2つのスペル('colour'と'color')をサポートしたくないということです。

色が必要なときには、GD::Graph::colourパッケージの色の名前を使わなければいけません。「 perldoc GD::graph::colour」とすると、正しい色の名前が入った、そのモジュールの説明を見ることができます。もし使用可能であればシステムのrgb.txtを読み込むように変更することができます。


フォント

あなたのGDのバージョンによっては、これはGD組込フォントといわゆるTrueTypeフォントの両方を受け入れます。TrueTypeフォントの場合、フォントサイズを指定しなければなりません。詳細とその他については GD::Text をご覧ください。というのもGD::Graphでのフォントの取扱いはすべてそこに委任されているからです。

例:

    $my_graph->set_title_font('/fonts/arial.ttf', 18);
    $my_graph->set_legend_font(gdTinyFont);
    $my_graph->set_legend_font(
        ['verdana', 'arial', gdMediumBoldFont], 12)

(上記の話はGD::Text 0.65を元にしています。古いバージョンではより制約された動きになります。)


ホットスポット

これが実験的な機能であること、そしてインターフェースは将来、変更される可能性があること、その可能性が高いことに注意してください。

GD::Graphは各データポイントのために内部的な座標のセットを持っています。この仕様はHTMLイメージマップの仕様と非常にており、実際、主にはそのために存在しています。これらのホットスポットをget_hotspotメソッドで取得することができます。このメソッドは2つのオプションの引数を受け取ります。あなたが興味を持っているデータセットの番号とそのデータセットでのあなたが興味を持っているポイントの番号です。2つの引数をつけてこのメソッドを呼び出すと以下のような形式のリストを返します:

  'rect', x1, y1, x2, y2
  'poly', x1, y1, x2, y2, x3, y3, ....
  'line', xs, ys, xe, ye, width

rect(長方形)のためのパラメータは長方形の角の座標です。poly(多角形)のためのパラメータは多角形の頂点の座標です。lineのためのパラメータは開始点と終了点の座標そして幅です。ほとんど直接これらをHTMLイメージマップの仕様に変換することができます。

もしget_hotspotの2番目の引数が省略されると、配列へのリファレンスが返されます。このリストは指定されたデータセット中のすべての点を表します。そしてそれぞれの配列は上記で表したような形式になります。

  ['rect', x1, y1, x2, y2 ], ['rect', x1, y1, x2, y2], ...

もしget_hotspotの両方の引数が省略されると、返されるリストには各データセットのための配列へのリファレンスが入ってきます。それぞれ各ポイントのための配列へのリファレンスが入っています。

  [
    ['rect', x1, y1, x2, y2 ], ['rect', x1, y1, x2, y2], ...
  ],
  [
    ['line', xs, ys, xe, ye, w], ['line', xs, ys, xe, ye, w], ...
  ],...

注意

Perlのすべてのモジュールへ:インターフェースを守るようにしてください。もしこのモジュールの内部の知識をもてあそぶと、痛い目にあうでしょう。私はいつこれを変更するかわかりません。


バグ

GD::Graphオブジェクトは再使用することができません。新しく描画するためには、新しいGD::Graphオブジェクトを作成しなければなりません。


作者(AUTHOR)

Martien Verbruggen <mgjv@comdyn.com.au>


著作権(Copyright)

GIFgraph: Copyright (c) 1995-1999 Martien Verbruggen. Chart::PNGgraph: Copyright (c) 1999 Steve Bonds. GD::Graph: Copyright (c) 1999 Martien Verbruggen.

All rights reserved. This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


謝辞(Acknowledgements)

Thanks to Steve Bonds for releasing Chart::PNGgraph, and keeping the code alive when GD reached version 1.20, and I didn't have time to do something about it.

Thanks to the following people for contributing code, or sending me fixes: Dave Belcher, Steve Bonds, Mike Bremford, Damon Brodie, Gary Deschaines brian d foy, Edwin Hildebrand, Ari Jolma, Tim Meadowcroft, Honza Pazdziora, Scott Prahl, Vegard Vesterheim, Jeremy Wadsack.

And some people whose real name I don't know, and whose email address I'd rather not publicise without their consent.


参考資料

GD::Graph::FAQ, GD::Graph::Data, GD::Graph::Error, GD::Graph::colour


ホーム Perlの小技

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。