perl-制作统计图(折线)
2016-01-19 21:21
274 查看
#!/use/bin/perl =pod 制作MAMC-DMZ区域的TOP5统计图 =cut use utf8; use Encode; use SVG::TT::Graph::Line; #database info use DBI; use File::Find; use Data::Dumper; use POSIX qw(strftime); my $date = strftime("%Y-%m-%d", localtime(time));#tody my %mysql = ( 'dbname' => "test", 'host' => "127.0.0.1", 'port' => 3306, 'user' => 'report', 'pass' => 'test', ); #mysql connection my $database ="DBI:mysql:$mysql{'dbname'}"; my $dbh = DBI->connect($database,$mysql{'user'},$mysql{'pass'}) or die("Could not make connection to database:$DBI::errstr"); $dbh->do("SET character_set_client='utf8'"); $dbh->do("SET character_set_connection='utf8'"); $dbh->do("SET character_set_results='utf8'"); my (@fields,%month); #/存储日期信息/# my (@cname); #/存储中文字段名称/# my (@data_t_1,@data_t_2,@data_t_3,@data_t_4,@data_t_5,@data_t_6,@data_t_7); #/取到原始数据/# #squery info $sth = $dbh->prepare("SELECT sdate,apimap,scount FROM v_dmztop5"); $sth->execute() or die "无法执行SQL语句:$dbh->errstr"; #read info while(my @data = $sth->fetchrow_array()) { #print "$data[0],$data[1],$data[2]\n"; $data_array{"Y:$data[0]"}{$data[1]}="$data[2]"; $month{$data[0]}='1'; $cname{$data[1]}='1'; } #创建日期池 for (sort keys %month) { push @fields,"$_"; } my $nu; for my $va (sort keys %data_array) { $nu++; for my $vb (sort keys %{ $data_array{$va} }) { print "$nu\n"; print "$va->$vb=>$data_array{$va}{$vb}\n"; push @cname,"$vb" if $nu == 1; push @data_t_1,"0$data_array{$va}{$vb}" if $nu == 1; push @data_t_2,"0$data_array{$va}{$vb}" if $nu == 2; push @data_t_3,"0$data_array{$va}{$vb}" if $nu == 3; push @data_t_4,"0$data_array{$va}{$vb}" if $nu == 4; push @data_t_5,"0$data_array{$va}{$vb}" if $nu == 5; push @data_t_6,"0$data_array{$va}{$vb}" if $nu == 6; push @data_t_7,"0$data_array{$va}{$vb}" if $nu == 7; } print "\n"; } #/xy圆点值/# my @str1=("$data_t_1[0]","$data_t_2[0]","$data_t_3[0]","$data_t_4[0]","$data_t_5[0]","$data_t_6[0]","$data_t_7[0]"); my @str2=("$data_t_1[1]","$data_t_2[1]","$data_ c734 t_3[1]","$data_t_4[1]","$data_t_5[1]","$data_t_6[1]","$data_t_7[1]"); my @str3=("$data_t_1[2]","$data_t_2[2]","$data_t_3[2]","$data_t_4[2]","$data_t_5[2]","$data_t_6[2]","$data_t_7[2]"); my @str4=("$data_t_1[3]","$data_t_2[3]","$data_t_3[3]","$data_t_4[3]","$data_t_5[3]","$data_t_6[3]","$data_t_7[3]"); my @str5=("$data_t_1[4]","$data_t_2[4]","$data_t_3[4]","$data_t_4[4]","$data_t_5[4]","$data_t_6[4]","$data_t_7[4]"); #xy轴坐标信息# my $graph = SVG::TT::Graph::Line->new( { 'height' => '500', 'width' => '900', 'show_data_values' => 0, #数值显示,0关闭,1开启 'scale_integers' => 1, 'show_y_title' => 1, #y坐标标题显示,0关闭,1开启 'show_x_title' => 1, #x坐标标题显示,0关闭,1开启 'y_title' => encode("utf8",'接口调用量'), 'x_title' => encode("utf8",'接口调日期'), 'show_graph_title' => 0, #0关闭,1开启 'graph_title' => 'MAMC-DMZ-TOP5', 'key' => 1, 'key_position' => 'bottom', 'fields' => \@fields, } ); #数据引用 my @xy = (\@str1,\@str2,\@str3,\@str4,\@str5); my $num; for my $val (@xy) { $num++; $graph->add_data( { 'data' => $val, 'title' => "$cname[$num-1]", } ); } open( my $fh, '>', "/home/mamc_report/report_file/mamc_dmztop5$date.svg" ); select $fh; binmode $fh; print $graph->burn(); close($fh); $sth->finish(); $dbh->disconnect; ![这里写图片描述](http://img.blog.csdn.net/20160119212039795)
相关文章推荐
- jquery实现动静态条形统计图
- javascript实现动态统计图开发实例
- PHP制作3D扇形统计图以及对图片进行缩放操作实例
- 使用java实现各种数据统计图(柱形图,饼图,折线图)
- fushionChars画动态统计图
- AchartEngine 画柱状图
- jquery报表
- JavaScript- 图表库Highcharts
- 润乾统计图超链接使用例子
- PHP+mysql+Highcharts实现饼状统计图
- MPAndroidChart开源图表《总》之折线图、统计图、扇形图
- 统计图插件
- 自定义条形对比统计图
- android自定义环形统计图(带动画)
- Cacti(RRDTOOL)中文乱码以及统计图乱码问题解决方法
- Topo研发管理系统V3.0免费版功能概览
- 博计报表中图例的起始值、间隔范围动态生成
- cacti不能显示统计图的解决方法
- 虚心像报表统计分析高手请教,接近200个商品的零售统计分析功能
- 润乾集算报表生成SVG统计图的示例