利用PERL GD画图

April 13th, 2007 | Categories: Boring | Tags:

PERL中的GD模块可以根据提供的数据来画柱图或者线图。在Windows下安装和演示实例代码。

  1. 先安装activeperl 
  2. 下载NMAKE 
  3. 安装GD模块  ppm install http://theoryx5.uwinnipeg.ca/ppms/GD.ppd
  4.  安装GD::Text 将压缩文件解压,perl makfile.pl ; nmake;nmake test;nmake install
  5. 安装GD::Graphic模块 ;将压缩文件解压,perl makfile.pl ; nmake;nmake test;nmake install

从statspack中抽取数据,存储到文本文件,perl 代码如下,

use GD::Graph::lines;
print STDERR “Processing Edit1.data\n”;
@data = read_data(”Edit1.data”)  or die “Cannot read data from Edit1″;
$my_graph = new GD::Graph::lines(800,300);
$my_graph->set(
x_label => ‘Days in statspack’,
y_label => ‘Buffer Gets’,
title => ‘Buffer Gets ‘,
#y_min_value => 0,
#y_max_value => 109224787,
y_tick_number => 10,
#y_label_skip => 1,
x_tick_number => ‘auto’,
#x_label_skip => 2,
x_all_ticks =>1,
box_axis => 0,
line_width => 2,
x_label_position => 1/2,
r_margin => 15,
x_labels_vertical => 1,
transparent => 0,
);

$my_graph->set_legend(’Show buffer gets metric’);
$my_graph->plot(\@data);
save_chart($my_graph, ‘edit1′);
sub read_data
{
my $fn = shift;
my @d = ();
open(ZZZ, $fn) || return ();
while (<ZZZ>)
{
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;
}
sub save_chart
{
my $chart = shift or die “Need a chart!”;
my $name = shift or die “Need a name!”;
local(*OUT);
my $ext = $chart->export_format;
open(OUT, “>$name.$ext”) or
die “Cannot open $name.$ext for write: $!”;
binmode OUT;
print OUT $chart->gd->$ext();
close OUT;
}

会生成如下类似图片,

虽然比rrd画图难看些。

Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪 ViVi 365Key 网摘 天极网摘 和讯网摘 博拉网 POCO 网摘 饭否 QQ 书签 Digbuzz 我挖网 Mister Wong
  1. Eagle Fan
    April 13th, 2007 at 22:21
    Quote | #1

    不错不错,rrd画图也挺难看