- 论坛徽章:
- 12
|
本帖最后由 523066680 于 2018-02-03 16:31 编辑
- use File::Slurp;
- use GD::Graph;
- use GD::Graph::linespoints;
- use Data::Dump qw/dump/;
- use List::Util qw/min max/;
- our $font = "C:/windows/fonts/msyh.ttf";
- my @data;
- my @data1 = read_data("./data1.txt") or die "$!";
- my @data2 = read_data("./data2.txt") or die "$!";
- @data = (@data1, $data2[1]);
- my ( $min1, $max1, $min2, $max2, $min, $max );
- $min1 = min( @{$data[1]} );
- $max1 = max( @{$data[1]} );
- grep { $_ = $_ - $min1 } @{$data[1]};
- $min2 = min( @{$data[2]} );
- $max2 = max( @{$data[2]} );
- grep { $_ = $_ - $min2 } @{$data[2]};
- # 全局最小值、最大值
- $min = 0.0;
- $max = max($max1-$min1, $max2-$min2);
- dump @data;
- $graph = new GD::Graph::linespoints( 800, 600 );
- $graph->set(
- x_label => 'Day',
- y_label => 'Fpercent(%)',
- y2_label => 'Num(W)',
- title => "图表",
- two_axes => 1,
- x_labels_vertical =>1,
- x_label_position => 1/2,
- y_min_value => $min,
- y_max_value => $max,
- y_tick_number => 6,
- correct_width =>1,
- line_width => 2,
- long_ticks => 1, #是否显示长刻度线
- x_ticks => 0, #X轴不显示长刻度线
- transparent => 0,
- legend_placement => 'RT',
- # show_values => 1,
- # values_format => "%.3f",
- y1_number_format => sub { sprintf("%.3f", $_[0] + $min1 ) },
- y2_number_format => sub { sprintf("%.3f", $_[0] + $min2 ) },
- );
- $graph->set_title_font($font, 14);
- $graph->set_y_label_font($font, 12);
- $graph->set_x_label_font($font, 12);
- $graph->set_y_axis_font($font, 10);
- $graph->set_x_axis_font($font, 10);
- $graph->set_legend_font($font, 12);
- $graph->set_legend( 'data set 1', 'data set 2' );
- $graph->plot(\@data);
- write_file("line_point.png", {binmode=>':raw'}, $graph->gd->png() );
- sub read_data
- {
- my @d = ();
- my @lines = read_file( $_[0] );
- my @ele;
- for my $line ( @lines )
- {
- $line=~s/\r?\n//;
- @ele = split(/\s+/, $line );
- push @{$d[0]}, $ele[0];
- push @{$d[1]}, $ele[2]; # 去掉中间数据
- }
- return @d;
- }
复制代码
|
|