#!perl use strict; use GD; use GD::Graph::bars; use GD::Graph::hbars; # read header for y legend chomp( my $header = ); my (undef,@y_legend) = split /\s+/,$header; # read rows of data my @data=(); while (){ chomp; my @col = split /\s+/,$_; for my $i (0..$#col){ push @{$data[$i]},$col[$i]; } } # create vertical stacked bars graph # use hbars->new for horiz stacked bars my $my_graph = GD::Graph::bars->new(1000,500); $my_graph->set( x_label => 'Method', y_label => 'Y label', title => 'Stacked Bar', cumulate => 2, bar_spacing => 5, transparent => 0, ); # Allowed # white, lgray, gray, dgray, black, lblue, blue, dblue, gold, lyellow, yellow, # dyellow, lgreen, green, dgreen, lred, red, dred, lpurple, purple, dpurple, lorange, # orange, pink, dpink, marine, cyan, lbrown, dbrown. my @colour_array = qw(lblue dbrown blue lred lgreen yellow green red purple orange pink dyellow); $my_graph->set( dclrs => \@colour_array ); # text sizes # gdGiantFont, gdLargeFont, gdMediumBoldFont, gdSmallFont , gdTinyFont $my_graph->set_x_label_font(gdGiantFont); $my_graph->set_x_axis_font(gdSmallFont); $my_graph->set_y_label_font(gdGiantFont); $my_graph->set_y_axis_font(gdMediumBoldFont); $my_graph->set_title_font(gdGiantFont); $my_graph->set_legend_font(gdGiantFont); $my_graph->set_legend( @y_legend ); # plot my $img = $my_graph->plot(\@data); # save open(IMG, '>file.png') or die $!; binmode IMG; print IMG $img->png; __DATA__ METHOD 0TM 1TM 2TM >2TM method1 3 68 18 10 method2 3 80 10 6 method3 3 87 9 1 method4 5 83 9 3 method5 6 75 15 4 method6 14 77 6 3 method7 12 82 2 3 method8 9 84 3 3 method9 13 68 16 3 method10 5 65 20 9 method11 9 64 20 7 method12 5 68 18 9 method13 6 82 9 2 method14 11 79 8 2 method15 6 69 20 5 method16 5 80 11 3 method17 1 68 17 14