Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用perl绘制图形_Perl_Graph - Fatal编程技术网

用perl绘制图形

用perl绘制图形,perl,graph,Perl,Graph,图1 我对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

图1 我对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;
@user_list=(排序{$user_list{$a}$user_list{$b}}键%user_list);
@数据=\@user\u列表;
#遍历周并将每周信息添加到数据数组中
我的$size=标量@周;
如果($size>4)
{
$start=$size-4;
打印$start;
}
对于我的$i($start..($size-1))
{
我的@week=@{$weeks[$size-$i-1]};
foreach my$x(@week){$x=ceil($x/7);}
@数据=(@数据,\@周);
}
$graph=GD::graph::bar->new(1200600);
$graph->set(
x_标签=>“周”,
y_label=>“每个用户的平均打开案例总数”,
title=>“每用户Alpha案例每周趋势”,
透明=>0,
bargroup_间距=>3,
显示_值=>1
);
$graph->set_图例(@week_start_dates);
$gd=$graph->plot(\@data);
打开(IMG,'>/var/www/cgi-bin/receive-case-management/graphs/Alpha_-Cases.png')或die$!;
双模式IMG;
打印IMG$gd->gif;
关闭IMG;
我正在对x轴上显示前4周的图表进行故障排除 @周开始日期=2014年7月26日2014年8月02日2014年8月09日2014年8月16日2014年8月23日2014年8月30日2014年9月06日2014年9月13日

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

因此,如果我不反转@week_start_日期,它将显示在第二个图表中: 2014年9月13日2014年9月6日2014年8月30日2014年8月23日

我不知道它在代码中的确切位置,只显示4周。我想在x轴上打印这个。 2014年8月23日2014年8月30日2014年9月6日2014年9月13日


我是否应该使用@week\u start\u dates=substr函数来显示最近4周的日期?实际上,代码中的某个地方只修改了4周,我无法找到。非常感谢您的帮助?

有关您评论中的问题:

我有一个数组

当我 我需要按这个顺序打印

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

在这里了解阵列切片。演示如何获取阵列的某些部分

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

依此类推……

jm666-我没有粘贴整个代码,但这部分代码正在绘制图表。只是数据部分。很抱歉以前粘贴了错误的代码,我没有意识到。现在添加了正确的代码。这有意义吗?jm666忽略上述数据。我只有一个简单的问题。我有一个数组@week_start_dates=2014年7月28日2014年8月4日2014年8月11日2014年8月18日2014年8月25日2014年9月1日2014年9月8日2014年9月15日。当我打印它时,我需要按这个顺序打印。2014年8月25日2014年9月1日2014年9月8日2014年9月15日。因此它实际上只打印4周(前4周)。我想打印从8月25日到9月15日的最后几周。你知道如何在绘图时反向打印它吗。如果我反转数组@week_start_dates=reverse(@week_start_dates)。它从9月15日至9月8日至8月25日至8月18日打印,但应该是8月18日至9月15日。非常感谢你jm666。谢谢您的耐心和回答。@javalearner好的,很高兴有帮助,删除上面不必要的评论。。。
Aug-25-2014 Sep-01-2014 Sep-08-2014 Sep-15-2014.
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