documents:proglang:perl:perl-003
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン | |||
| documents:proglang:perl:perl-003 [2026/05/17 15:04] – [GDを使ったグラフ描画] k896951 | documents:proglang:perl:perl-003 [2026/05/17 15:04] (現在) – [011.PerlのGD.pmを使ったグラフ描画] k896951 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | |||
| + | ====== 011.PerlでGD.pmを使ったグラフ描画 ====== | ||
| + | |||
| + | |||
| + | 2008年01月31日 03時14分45秒 | ||
| + | |||
| + | ===== これは何? ===== | ||
| + | |||
| + | |||
| + | perlで書いたグラフの描画コード。 | ||
| + | |||
| + | ===== perlでグラフを書く ===== | ||
| + | |||
| + | |||
| + | ==== GD.pm ==== | ||
| + | |||
| + | |||
| + | 有名どころにGDなるものがある。このモジュールを利用すると、昔のBASICに実装されていたグラフィックステートメントの様な雰囲気のメソッド群が利用できるようになる。 | ||
| + | ただし、直接画面を描画するわけではなく、仮想画面を準備しそこへ描画。最終的に仮想画面の画像データを必要とする画像形式で取出しする。このあたりはさすがに昨今の描画システムを踏襲しているようだ。 | ||
| + | |||
| + | グラフを書くには絵を描く道具はあるものの、これを有用なものにくみ上げるのは大変手間がかかる。 | ||
| + | グラフ描画コンポーネントが数多く作られ、利用されているのは、こういった手間を省いて、本来の要件に注力出来るようにするためである。 | ||
| + | |||
| + | ==== これでどうする? ==== | ||
| + | |||
| + | |||
| + | たとえば、円グラフであれば、表示するデータのスケールによって描画精度を変更し、美しく見えるようにする必要があるし、棒グラフであれば、各データの比率を出して美しく見える大きさ(比率)を算出しなくてはいけない。 | ||
| + | こういった事を考えつつ作業を行うのは非常に困難が伴うはずだ。 | ||
| + | |||
| + | しかし、自分の目的に沿ったコンポーネントが無い場合はやはり、原始的な部分から組み上げていかなければならない。 | ||
| + | とりあえず生成品質はおいて。 | ||
| + | |||
| + | ===== ソース ===== | ||
| + | |||
| + | 以下は、とりあえずの円グラフを書き出すperlスクリプトである。CGIとして利用する。 | ||
| + | 値としてP1, | ||
| + | |||
| + | <code perl circle.pl> | ||
| + | # | ||
| + | |||
| + | use GD; | ||
| + | use CGI; | ||
| + | |||
| + | my $PI = 3.141592653; | ||
| + | my $R = 50; | ||
| + | my $X = 150; | ||
| + | my $Y = 150; | ||
| + | |||
| + | my $form = new CGI; | ||
| + | my $image = new GD:: | ||
| + | |||
| + | $p1 = $form-> | ||
| + | $p2 = $form-> | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | if ($p1+$p2 > 0) { | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | ## p1 | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | ## p2 | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | else { | ||
| + | | ||
| + | } | ||
| + | |||
| + | | ||
| + | print $image-> | ||
| + | </ | ||
| + | |||
| + | これを " | ||
| + | |||
| + | | ||
| + | |||
| + | のように呼び出す。 | ||
| + | |||
| + | < | ||
| + | <img src="// | ||
| + | </ | ||
| + | |||
| + | 実行してみればわかるが、ジャギーは目立つし、極端な比率の場合の表示もプア。 | ||
| + | 描画開始位置もおかしい。 | ||
| + | こういった細かい部分にどれだけ手が入っているかで、グラフ描画コンポーネントの価値が決まる。 | ||
| + | |||
| + | {{tag> Perl GD 技術資料}} | ||
documents/proglang/perl/perl-003.txt · 最終更新: by k896951
