在perl中绘制图形

时间:2014-09-13 07:44:46

标签: perl graph

first graph图1 graph2我是perl的新手,绘图是我正在学习的东西。这是一个代码。

@user_list = (sort { $user_list{$a} <=> $user_list{$b} } keys %user_list);
@data = \@user_list;

# Goes through the weeks and add each week info to the data array
my $size = scalar @weeks;
    if ($size > 4)
{
    $start = $size - 4;
    print $start;
}
for my $i ($start..($size - 1))
{
    my @week = @{$weeks[$size - $i - 1]};
    foreach my $x (@week) { $x = ceil($x / 7); }
    @data = (@data, \@week);
    }

$graph = GD::Graph::bars->new(1200,600);

$graph->set( 
    x_label => 'Weeks',
    y_label => 'Average Total Open Cases Per User',
    title => 'Alpha Cases Weekly Trend Per User',
    transparent => 0,
    bargroup_spacing => 3,
    show_values => 1
);
    $graph->set_legend(@week_start_dates);
$gd = $graph->plot(\@data);
open(IMG, '> /var/www/cgi-bin/remedy-case-management/graphs/Alpha_Cases.png') or die $!;
binmode IMG;
print IMG $gd->gif;
close IMG;

我正在对图表进行故障排除,该图表显示x轴上的前4周   @ week_start_dates = Jul-26-2014 Aug-02-2014 Aug-09-2014 Aug-16-2014 Aug-23-2014 Aug-30-2014 Sep-06-2014 Sep-13-2014

因此,当我打印图表时,显示从7月26日到8月16日的前4周,如图中的第一张图,但我想打印8月23日至9月13日。

因此,如果我不反转@week_start_dates,则显示在第二个图中: Sep-13-2014 Sep-6-2014 Aug-30-2014 Aug 23-2014

我不知道修改的代码究竟在哪里只显示4周。我想在x轴上打印它。 8月23日至11月4日至2014年9月6日至2014年9月6日至2014年9月13日,

我应该使用@ week_start_dates = substr函数来显示过去4周的日期。它实际上只在代码中的某处修剪了4周,我无法找到它。可以非常感谢帮助吗?

1 个答案:

答案 0 :(得分:1)

对于你评论中的问题:

  

我有一个数组

@week_start_dates = Jul-28-2014 Aug-04-2014 Aug-11-2014 Aug-18-2014 Aug-25-2014 Sep-01-2014 Sep-08-2014 Sep-15-2014 .
  

当我   绘制它我需要按此顺序打印。

Aug-25-2014 Sep-01-2014 Sep-08-2014 Sep-15-2014.
  

所以它实际上只打印了4周(前4周)。我想打印从8月25日到第15周的最后几周。

了解数组切片,perldata。演示获取阵列的某些部分。

use feature 'say';
use strict;
use warnings;

my(@wsd) = qw(Jul-28-2014 Aug-04-2014 Aug-11-2014 Aug-18-2014 Aug-25-2014 Sep-01-2014 Sep-08-2014 Sep-15-2014);

say "@wsd"; #the whole array
#Jul-28-2014 Aug-04-2014 Aug-11-2014 Aug-18-2014 Aug-25-2014 Sep-01-2014 Sep-08-2014 Sep-15-2014

say "@wsd[2..5]"; # from 2 up to 5 (indexed from 0)
#Aug-11-2014 Aug-18-2014 Aug-25-2014 Sep-01-2014

say "@wsd[0,-1]"; #0 and last
#Jul-28-2014 Sep-15-2014

say "@wsd[-4..-1]"; #last 4
#Aug-25-2014 Sep-01-2014 Sep-08-2014 Sep-15-2014

依旧......