换工作了,平时也没少得到办理朋友的帮助
这些东西是我最近总结的,主要是cpan 上GD::Graph模块的文档和sample代码的一点注释和总结
希望能对需要的朋友有帮助。
在这里也谢谢那些平时经常解答问题的朋友,特别感谢版主和apile大哥
我平时的主要工作是做报表
应用的主要模块是spreadSheet::WriteExcel
下边的每个程序都是我自己跑过的
#!/usr/local/bin/perl
# 柱图示例程序
# 创建时间:2008-02-20
# 更多详情是查看cpan文档及示例程序
use strict;
use GD::Graph::bars;
use GD::Graph::hbars;
use GD::Graph::Data;
use Encode; # 用于处理汉字问题
my $data = GD::Graph::Data->new( # 数据集必须是一维数组(或其引用),其中存储的是各个子数据数组的引用
[
["2007-01","2007-02","2007-03","2007-04","2007-05","2007-06","2007-07", "2007-08", "2007-09"],
[ 50000, 12000, 24000, 33000, 19000, 8000, 6000, 15000, 21000],
[ 10000, 20000, 50000, 60000, 30000, 15124, 10000, 30000, 40000],
]
) or die GD::Graph::Data->error;
my @names = qw/GDBar GDBar-h/;
for my $my_graph (GD::Graph::bars->new(600,400),
GD::Graph::hbars->new(600,400))
{
my $name = shift @names;
print STDERR "Processing $name\n";
$my_graph->set(
# 与坐标轴有关的选项设定
title => decode("gb2312",'流量图'), # 标题
x_label => decode("gb2312",'月份'), # X轴标签(说明)
two_axes => 1, # 两条坐标轴
y1_label => decode("gb2312",'流入流量(kbps)'), # Y轴标签(说明) --- 可以有两个Y轴
y2_label => decode("gb2312",'流出流量(kbps)'),
y1_max_value => 60000, # Y轴最大坐标值
# y2_max_value => 8, # 默认为自动匹配
y_tick_number => 8, # Y轴坐标的个数
y_label_skip => 2, # Y轴每隔几个显示一次坐标值
# y_plot_values => 1, # 默认为1显示,是否显示刻度值
long_ticks => 1, # 默认为0(正常的短刻度线), 1:长坐标刻度线
# tick_length => 4, # 控制刻度线长度,与long_ticks => 0, 配套使用
# x_ticks => 0, # 作用与long_ticks相同,限定X轴不显示刻度线,这样就只显示一条长刻度线
x_plot_values => 1, # 默认为1,控制是否显示X轴刻度,如果设为0,则 x_ticks 属性将无效
y1_number_format => sub { # from perlfaq5 # 控制坐标轴格式的子函数。
local $_ = shift;
1 while s/^([-+]?\d+)(\d{3})/$1,$2/; # 此为数字分隔效果:20,000
$_;
},
y2_number_format => sub { my $v = shift; sprintf("%.2f",$v/1024) }, # 控制坐标轴格式
# zero_axis_only => 1, # 默认为0,当设为1时,将只画出0坐标轴,而不会在图的底部画轴,坐标也将在0轴上标注,都用于有正负值的图
# use_axis => [1, 2, 2], # 当有两个坐标轴但是有三个数据集的时候。
# 可以设定这三个数据集分别使用左右哪个坐标轴
# 同时图例要设置三个数据集颜色:dclrs => [qw(lgreen lred lred)],
legend_placement => 'RT', # 图例位置
# bar选项
bar_spacing => 1, # 同组柱间距
bargroup_spacing => 10, # 柱组间距
shadow_depth => 4, # 阴影宽度
accent_treshold => 200, # 当bar的宽度大于此值时,bar的边缘会产生分界线,
# 如果想让图片效果连贯,则将此值设的比较大
show_values => 1, # 在柱图上边标注数值
values_format => "%3.2f", # 数值格式
# cumulate => 2, # bar图的另一种形式。显示为积累方式。比较多用于体现出增长的情况
# overwrite => 1, # 0:没有覆盖,普通柱图,两个bar平行。 1:两个bar相互覆盖。即在统一直线上 2:类似cumulate => 1的效果
# 图例说明
legend_placement => 'RT', # 图例位置
x_label_position => 1/2,
# 颜色选项
bgclr => 'white',
fgclr => 'white',
boxclr => 'dblue',
accentclr => 'dblue',
valuesclr => '#ffff77',
dclrs => [qw(lgreen lred)], # 设置数据集对应的颜色。设置为undef将隐藏该数据组
logo => 'zhong-ying.png',# logo 制作好的图片放在/usr/local/src/soft/GDGraph-1.44_01/t/images目录下
logo_position => 'BR',
transparent => 0, # 设定为1,背景色将变为透明色
l_margin => 10, # 各个边距
b_margin => 10,
r_margin => 10,
t_margin => 10,
) or warn $my_graph->error;
if ($name =~ /-h$/) # 横向图效果更好
{
$my_graph->set(x_labels_vertical => 0, values_vertical => 0); # 横向图:横轴标签为水平,柱上数值为水平方式
$my_graph->set_legend('bottom axis', 'top axis'); # 设定图例内容 设置为undef将隐藏该图例
}
else
{
$my_graph->set(x_labels_vertical => 1, values_vertical => 1);
$my_graph->set_legend('left axis', 'right axis');
}
# 相关字体设置
# 字体文件SURSONG.TTF可在windos系统下寻找合适的自己文件
$my_graph->set_y_label_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # Y轴说明
$my_graph->set_x_label_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # X轴说明
$my_graph->set_y_axis_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # Y轴坐标
$my_graph->set_x_axis_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # X轴坐标
$my_graph->set_title_font('/shvpn/test/wlj/GD/SURSONG.TTF', 16); # 标题
$my_graph->set_legend_font('/shvpn/test/wlj/GD/SURSONG.TTF', 14); # 图例
$my_graph->set_values_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # 数值
$my_graph->plot($data) or die $my_graph->error;
save_chart($my_graph, $name);
}
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;
}
=====================================================================
=====================================================================
#!/usr/local/bin/perl
# line示例程序
# 创建时间:2008-02-20
# 更多详情是查看cpan文档及示例程序
use GD::Graph::lines;
use Encode; # 用于处理汉字问题
print STDERR "Processing GDLine\n";
@data = (
[ qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) ],
[ reverse(4, 3, 5, 6, 3, 1.5, -1, -3, -4, -6, -7, -8)],
[ (4, 3, 5, 6, 3, 1.5, -1, -3, -4, -6, -7, -8)],
[ (2, 2, 2, 5, 5, 4.5,1.5, 2, 3, 5, 4, 3)],
);
$my_graph = new GD::Graph::lines();
$my_graph->set(
x_label => decode("gb2312",'月份'),
y_label => decode("gb2312",'故障增量'),
title => decode("gb2312",'故障增量情况统计图'),
y_max_value => 8,
y_min_value => -8,
y_tick_number => 16,
y_label_skip => 2,
box_axis => 0, # 默认为1,通过轴包成一个box状
zero_axis_only => 1, # 默认为0,当设为1时,将只画出0坐标轴,而不会在图的底部画轴,坐标也将在0轴上标注
x_label_position => 1,
y_label_position => 1,
# x_tick_number => 'auto', # 自动设定X轴的坐标,以达到美观的效果,主要用于画时序图
x_label_skip => 3,
x_tick_offset => 2, # X轴坐标签的偏移量。隔过两个,从第三个开始显示
# 关于 line
line_width => 3, # Line的宽度,默认1
dclrs => [black,red,green], # 线的颜色
line_types => [ 1, 2, 3 ], # Available line types are 1: solid, 2: dashed, 3: dotted, 4: dot-dashed.
line_type_scale => 10, # 控制虚线(dashed)的长度,主要用于区别point
l_margin => 10, # 各个边距
b_margin => 10,
r_margin => 10,
t_margin => 10,
transparent => 0,
);
$my_graph->set_legend(decode("gb2312",'上海'), decode("gb2312",'甘肃'), decode("gb2312",'河南'));
# 相关字体设置
$my_graph->set_y_label_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # Y轴说明
$my_graph->set_x_label_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # X轴说明
$my_graph->set_y_axis_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # Y轴坐标
$my_graph->set_x_axis_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # X轴坐标
$my_graph->set_title_font('/shvpn/test/wlj/GD/SURSONG.TTF', 16); # 标题
$my_graph->set_legend_font('/shvpn/test/wlj/GD/SURSONG.TTF', 14); # 图例
$my_graph->set_values_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # 数值
# 制图
open(IMG, '>./GDLine.png') or die $!;
print IMG $my_graph->plot(\@data)->png;
close IMG;
===========================================================================
===========================================================================
#!/usr/local/bin/perl
# 饼图示例程序
# 创建时间:2008-02-20
# 更多详情是查看cpan文档及示例程序
use GD::Graph::pie;
use Encode; # 用于处理汉字问题
print STDERR "Processing GDPie\n";
@data = ( # 数据集必须是一维数组(或其引用),其中存储的是各个子数据数组的引用
["1st(50%)","2nd(20%)","3rd(30%)","4rd(0.01%)"], # 目前并有选项可以直接控制饼图上数值的显示方式,只能手工指定显示方式
[ 500, 200, 300, 1]
);
$my_graph = new GD::Graph::pie( 400, 300 );
#$my_graph = new GD::Graph::pie( );
$my_graph->set(
title => decode("gb2312",'测试饼图'), # 标题
# label => 'Label', # 类似于饼图的说明,看情况可有可无
axislabelclr => 'white', # 分割线颜色
pie_height => 20, # 做出3D效果,设定饼图高度
dclrs => [qw(lgreen lred blue black)], # 设定饼图片颜色,如果不设定则默认自动分配
start_angle => 235, # 第一个饼的起始角度 0°为正下方开始
suppress_angle => 5, # 默认为0 小于这个值时饼图将不画这个角
# 现在的GD::Graph不能够像JfreeChart那样引出一条线去显示数值
# 所以用这种方式避免图显得很乱
legend_placement => 'RR', # 图例位置
legend_spacing => 10,
# show_values => 1, # 这个选项在饼图中无效
l_margin => 20, # 各个边距
b_margin => 20,
r_margin => 20,
t_margin => 20,
transparent => 0,
);
$my_graph->set_legend("1st(50".decode("gb2312",'人').")", decode("gb2312",'2nd(20人)') ,decode("gb2312",'3rd(30人)'), decode("gb2312",'4rd(1人)')), # 目前并有选项可以直接控制图例上数值的显示方式,只能手工指定显示方式
#$my_graph->set_value_font(GD::Font->Giant);
#$my_graph->set_legend_font(GD::Font->Large);
$my_graph->set_title_font('/shvpn/test/wlj/GD/SURSONG.TTF', 18);
$my_graph->set_label_font('/shvpn/test/wlj/GD/SURSONG.TTF', 15);
$my_graph->set_value_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12);
$my_graph->set_legend_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # 图例字体格式 (字体,字号)
open(IMG, '>./GDPie.png') or die $!;
print IMG $my_graph->plot(\@data)->png;
close IMG;
===========================================================================
===========================================================================
下边这个就是个零碎的选项注释:
# sample1* -- bar 柱图
# sample2* -- area 片图
# sample3* -- point 点图
# sample4* -- linePoint 点线图
# sample5* -- line 线图
# sample6*7* -- fix 混合图
# sample18.pl sample42.pl 描述了特殊的赋值方式
$my_graph->set(
x_label => 'X Label',
y_label => 'Y label',
title => 'Two data sets',
long_ticks => 0, # 短刻度线,可通过tick_length控制刻度线长度
long_ticks => 1, # 显示长刻度线
x_ticks => 0, # 同时限定X轴不显示刻度线,这样就只显示一条长刻度线
y_max_value => 40,
x_tick_number => 'auto', # 自动设定X轴的坐标,以达到美观的效果 如果设定x_tick_number为某一个数值则X轴将画出这么多个坐标,默认Undef每个值都作为轴坐标显示
y_tick_number => 8, # 设定y轴刻度线的个数
x_label_skip => 3, #
x_tick_offset => 2, # X轴坐标签的偏移量。隔过两个,从第三个开始显示
y_label_skip => 2, # 每隔几个可读线才显示值
y_plot_values => 1, # 逐个显示刻度值,与跳过刻度值相对。
x_plot_values => 1,
x_plot_values => 0, # 是否显示坐标值 默认1 0:不显示
bar_spacing => 3, # 柱间距
bargroup_spacing => 10, # 柱组间距
shadow_depth => 4,
accent_treshold => 200, # 当bar的宽度大于此值时,bar的边缘会产生分界线,如果想让图片效果连贯,则将此值设的比较大
transparent => 1, # 设定为1,背景色将自动改为透明色
zero_axis_only => 1, # 默认为0,当设为1时,将只画出0坐标轴,而不会在图的底部画轴,坐标也将在0轴上标注
two_axes => 1, # 两条坐标轴
use_axis => [1, 2, 2], # 当有两个坐标轴但是有三个数据集的时候。
# 可以设定这三个数据集分别使用左右哪个坐标轴
# 同时图例要设置三个数据集颜色:dclrs => [qw(lgreen lred lred)],
legend_placement => 'RT', # 图例位置
show_values => 1, # 在柱图上边标注数值
values_format => "%3.2f", # 数值格式
y1_number_format => sub { # from perlfaq5 # 控制坐标轴格式的子函数。
local $_ = shift;
1 while s/^([-+]?\d+)(\d{3})/$1,$2/; # 此为数字分隔效果:20,000
$_;
},
y2_number_format => sub { my $v = shift; sprintf("%.2f",$v/1024) }, # 控制坐标轴格式
interlaced => 1, # 默认为1 ,没明白效果
$my_graph->set(x_labels_vertical => 0, values_vertical => 0); # 横向图:横轴标签为水平,柱上数值为水平方式
$my_graph->set_legend('bottom axis', 'top axis'); # 设定图例内容
cumulate => 2, # bar图的另一种形式。显示为积累方式。
overwrite => 1, # 0:没有覆盖,普通柱图,两个bar平行。 1:两个bar相互覆盖。即在统一直线上 2:类似cumulate => 1的效果
# cumulate => 1, # 此属性不适合含有负值的图,用作查看增长情况不错。
dclrs => [ undef, qw(dgreen green) ], # 第一个数据集没有定义颜色,则默认为透明,即隐藏起来。
$my_graph->set_legend(undef, qw(low high)); # 第一个图例定义为undef,则隐藏第一个图例
# 点图 new GD::Graph::points
marker_size => 6, # 点的大小
markers => [ 5,7 ], # Available markers are:
# 1: filled square, 2: open square, 3: horizontal cross,
# 4: diagonal cross, 5: filled diamond, 6: open diamond,
# 7: filled circle, 8: open circle, 9: horizontal line,
# 10: vertical line. Note that the last two are not part of the default list.
# Default: [1,2,3,4,5,6,7,8]
# 点线图 new GD::Graph::linespoints
skip_undef => 1, # 默认为0,设为1:将跳过没有定义的点,则line将会断。如果设为0,则会直接连上有值的点
# 线图 new GD::Graph::lines
box_axis => 0, # 是否把轴圈成一个box 默认是1
line_width => 3, # line的宽度 默认1
line_types => [ 1, 2, 3, 4 ], # Available line types are 1: solid, 2: dashed, 3: dotted, 4: dot-dashed.
line_type_scale => 10, # 控制虚线(dashed)的长度,主要用于区别point
legend_marker_width => 24, # 图例的宽度(还可设定高度)
no_axes => 1, #默认值undef画出所有轴, 设定为0,1有不同的含义
# 饼图 GD::Graph::pie
pie_height => 30, # 饼图的高度,做出3D的效果
start_angle => 235, # 第一个饼的起始角度 0°为正下方开始
suppress_angle => 5, # 默认为0 小于这个值时饼图将不画这个角
'3d' => 0, # 默认3D 设为0 画二维饼图
# 控制字帖大小
$my_graph->set_value_font(GD::Font->Giant);
GD::Font->Small
GD::Font->Large
GD::Font->MediumBold
GD::Font->Tiny
GD::Font->Giant
==============================================================
===============================================================
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;
}
1;
=============================================================
=============================================================
[ 本帖最后由 King_Leo 于 2008-3-11 20:09 编辑 ]
King_Leo 回复于:2008-03-07 15:33:40
这个是一个用SpreadSheet::WriteEXcel 和GD::Graph配合制报表的一个例子
#!/usr/local/bin/perl
# 图表报表实例程序
# 创建时间:2008-02-20
# 更多详情是查看cpan文档及示例程序
use strict;
use Spreadsheet::WriteExcel;
use GD::Graph::bars;
use GD::Graph::hbars;
use GD::Graph::Data;
use Encode; # 用于处理汉字问题
require("/shvpn/nms/lib/SetBookFmt.pl");
print "Strat testing GD Graph report \n";
# 创建报表文件句柄
my $dest_book = Spreadsheet::WriteExcel->new("./TestGDReport.xls");
# 创建sheet页
my $dest_sheet = $dest_book->add_worksheet( decode("gb2312", 'GD图形测试报表') );
# 报表格式 以下格式在nms/lib/SetBookFmt.pl函数中进行了定义,详见Spreadsheet::WriteExcel说明文档
my $fmt_head=&SetBookFmt($dest_book,"fmt_title");
$fmt_head->set_size(15);
# 标题
my $fmt_title=&SetBookFmt($dest_book,"fmt_title");
# 副标题
my $fmt_subtitle=&SetBookFmt($dest_book,"fmt_subtitle");
# 列标题
my $fmt_coltitle =&SetBookFmt($dest_book,"fmt_coltitle");
# 数据
my $fmt_data = &SetBookFmt($dest_book,"fmt_data");
# 报表所需数据集
# 月份
my @month = qw(2007-01 2007-02 2007-03 2007-04 2007-05 2007-06 2007-07 2007-08 2007-09);
# 流入流量
my @inFlux = qw(50000 12000 24000 33000 19000 8000 6000 15000 21000);
# 流出流量
my @outFlux = qw(10000 20000 50000 60000 30000 15124 10000 30000 40000);
###------- 绘制数据表格部分 --------###
# 开始绘制表头
$dest_sheet->set_row(0,30); # 设置行高
$dest_sheet->set_column(0,2,20); # 设置列宽
$dest_sheet->merge_range(0,0,0,2,decode("gb2312"," GD测试报表"),$fmt_head);
$dest_sheet->merge_range(1,0,1,2,decode("gb2312"," 此报表主要用于演示报表的主要制作流程及测试GD制图的效果 "),$fmt_subtitle);
# 打印列标题
$dest_sheet->write(2,0,decode("gb2312",'月份'), $fmt_coltitle);
$dest_sheet->write(2,1,decode("gb2312",'流入流量(bps)'), $fmt_coltitle);
$dest_sheet->write(2,2,decode("gb2312",'流出流量(bps)'), $fmt_coltitle);
# 制表:
my $endLine = 3; #当前行号
for (my $i = 0; $i <= $#month; $i++) {
$dest_sheet->write($endLine,0,$month[$i],$fmt_data);
$dest_sheet->write($endLine,1,$inFlux[$i],$fmt_data);
$dest_sheet->write($endLine,2,$outFlux[$i],$fmt_data);
$endLine++;
}
### ------- 绘制表格结束 ----------###
### ------- 开始绘制统计图 ---- ###
# 整理统计图所需data数据集
my @data; # 数据集必须是一维数组,其中存储的是各个子数据数组的引用
push @data, \@month;
push @data, \@inFlux;
push @data, \@outFlux;
# 绘制bar图:
&createBarChart(\@data);
# 插入绘制成功的bar图:
$endLine += 3;
$dest_sheet->insert_image($endLine,0,"./tmpGDBar.png");
# 也可以增加sheet页:
my $dest_sheet_add = $dest_book->add_worksheet( decode("gb2312", '增加sheet页') );
# 按照特定报表需要,写入数据及统计图
$dest_sheet_add->insert_image(5,5,"./tmpGDBar.png");
# insert_image($row, $col, $filename, $x, $y, $scale_x, $scale_y) 参数说明,详见capn文档
# $row,$col坐标
# $filename 全路径文件名
# $x, $y,其实单元格的偏移量
# $scale_x, $scale_y 图片比例
# 关闭文件句柄,报表创建成功
$dest_book->close();
# 删除临时的统计图文件
unlink ("./tmpGDBar.png");
print ("create GD Report succeed ! \n");
sub createBarChart{
my $data = shift;
my $my_graph = GD::Graph::hbars->new(600,400);
print STDERR "Processing PNG\n";
$my_graph->set(
# 与坐标轴有关的选项设定
title => decode("gb2312",'流量图'), # 标题
x_label => decode("gb2312",'月份'), # X轴标签(说明)
two_axes => 1, # 两条坐标轴
y1_label => decode("gb2312",'流入流量(kbps)'), # Y轴标签(说明) --- 可以有两个Y轴
y2_label => decode("gb2312",'流出流量(kbps)'),
y1_max_value => 60000, # Y轴最大坐标值
# y2_max_value => 8, # 默认为自动匹配
y_tick_number => 8, # Y轴坐标的个数
y_label_skip => 2, # Y轴每隔几个显示一次坐标值
# y_plot_values => 1, # 默认为1显示,是否显示刻度值
long_ticks => 1, # 默认为0(正常的短刻度线), 1:长坐标刻度线
# tick_length => 4, # 控制刻度线长度,与long_ticks => 0, 配套使用
# x_ticks => 0, # 作用与long_ticks相同,限定X轴不显示刻度线,这样就只显示一条长刻度线
x_plot_values => 1, # 默认为1,控制是否显示X轴刻度,如果设为0,则 x_ticks 属性将无效
y1_number_format => sub { # from perlfaq5 # 控制坐标轴格式的子函数。
local $_ = shift;
1 while s/^([-+]?\d+)(\d{3})/$1,$2/; # 此为数字分隔效果:20,000
$_;
},
y2_number_format => sub { my $v = shift; sprintf("%.2f",$v/1024) }, # 控制坐标轴格式
# zero_axis_only => 1, # 默认为0,当设为1时,将只画出0坐标轴,而不会在图的底部画轴,坐标也将在0轴上标注,都用于有正负值的图
# use_axis => [1, 2, 2], # 当有两个坐标轴但是有三个数据集的时候。
# 可以设定这三个数据集分别使用左右哪个坐标轴
# 同时图例要设置三个数据集颜色:dclrs => [qw(lgreen lred lred)],
legend_placement => 'RT', # 图例位置
# bar选项
bar_spacing => 1, # 同组柱间距
bargroup_spacing => 10, # 柱组间距
shadow_depth => 4, # 阴影宽度
accent_treshold => 200, # 当bar的宽度大于此值时,bar的边缘会产生分界线,
# 如果想让图片效果连贯,则将此值设的比较大
show_values => 1, # 在柱图上边标注数值
values_format => "%3.2f", # 数值格式
# cumulate => 2, # bar图的另一种形式。显示为积累方式。比较多用于体现出增长的情况
# overwrite => 1, # 0:没有覆盖,普通柱图,两个bar平行。 1:两个bar相互覆盖。即在统一直线上 2:类似cumulate => 1的效果
# 图例说明
legend_placement => 'RT', # 图例位置
x_label_position => 1/2,
# 颜色选项
bgclr => 'white',
fgclr => 'white',
boxclr => 'dblue',
accentclr => 'dblue',
valuesclr => '#ffff77',
dclrs => [qw(lgreen lred)], # 设置数据集对应的颜色。设置为undef将隐藏该数据组
logo => 'zhong-ying.png',# logo 制作好的图片放在/usr/local/src/soft/GDGraph-1.44_01/t/images目录下
logo_position => 'BR',
transparent => 0, # 设定为1,背景色将变为透明色
l_margin => 10, # 各个边距
b_margin => 10,
r_margin => 10,
t_margin => 10,
) or warn $my_graph->error;
$my_graph->set(x_labels_vertical => 0, values_vertical => 0); # 横向图:横轴标签为水平,柱上数值为水平方式
$my_graph->set_legend('bottom axis', 'top axis'); # 设定图例内容 设置为undef将隐藏该图例
# 相关字体设置
$my_graph->set_y_label_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # Y轴说明
$my_graph->set_x_label_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # X轴说明
$my_graph->set_y_axis_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # Y轴坐标
$my_graph->set_x_axis_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # X轴坐标
$my_graph->set_title_font('/shvpn/test/wlj/GD/SURSONG.TTF', 16); # 标题
$my_graph->set_legend_font('/shvpn/test/wlj/GD/SURSONG.TTF', 14); # 图例
$my_graph->set_values_font('/shvpn/test/wlj/GD/SURSONG.TTF', 12); # 数值
open(IMG, '>./tmpGDBar.png') or die $!;
print IMG $my_graph->plot($data)->png;
close IMG;
}
[ 本帖最后由 King_Leo 于 2008-3-11 20:09 编辑 ]
mouse.rice 回复于:2008-03-07 15:40:29
顶起来!正需要。我最近也为绘图作报表烦恼,在GD绘图方面,望和兄弟多多交流,偶联系方式:
MSN:unix.linux@hotmail.com
QQ:370725724
多谢!
hitsubunnu 回复于:2008-03-07 16:29:51
顶!
gaochong 回复于:2008-03-07 17:40:04
和 gnuplot 有什么区别?
redicaps 回复于:2008-03-07 19:50:05
赞:wink:
chenzq1604 回复于:2008-03-11 13:00:08
不错不错,这个是好东东,要顶的
nsnake 回复于:2008-03-11 15:10:48
赞一个的先!
perljoker 回复于:2008-03-11 16:03:33
楼主,你发表的文章里面把左边那个“禁用smilies”点上……,这样好些,哈哈
King_Leo 回复于:2008-03-11 20:10:42
引用:原帖由 perljoker 于 2008-3-11 16:03 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8065490&ptid=1062258]
楼主,你发表的文章里面把左边那个“禁用smilies”点上……,这样好些,哈哈
接受批评。。。。哈哈
nsnake 回复于:2008-03-13 15:40:25
很实用的东西
nsnake 回复于:2008-03-13 16:08:34
win注意写入的时候要binmode下
chenxiam 回复于:2008-03-14 21:56:46
这个要赞的,非常感谢LZ共享,这么好的东西,先收下了,真是谢谢了
bilbo0214 回复于:2008-03-20 12:41:12
不错不错。要是LZ能把它做成一个pdf文件就好了。
fouter 回复于:2008-03-20 16:25:52
顶一下,收藏了先
|