Perl 如何防止GD::Graph写入最后一个X标签并覆盖其他标签?
我设置为跳过标签,但它仍然尝试显示最后一个标签,并且覆盖了另一个标签,看起来很凌乱。它不应该写最后一个标签。它应该跳过最后一个标签。我将要跳过的标签数量设置为数据点数量的函数 这就是它看起来的样子: 代码:Perl 如何防止GD::Graph写入最后一个X标签并覆盖其他标签?,perl,gd,gd-graph,Perl,Gd,Gd Graph,我设置为跳过标签,但它仍然尝试显示最后一个标签,并且覆盖了另一个标签,看起来很凌乱。它不应该写最后一个标签。它应该跳过最后一个标签。我将要跳过的标签数量设置为数据点数量的函数 这就是它看起来的样子: 代码: 好的,我找到了。只需使用模将条目的#除以要跳过的标签的#,并将其用作偏移量。似乎GD::Graph总是希望打印最后一个标签,因此无法控制它,但您可以控制要打印的第一个标签。对我来说似乎是倒退,但不管怎样 my $graph = GD::Graph::lines->new(400, 5
好的,我找到了。只需使用模将条目的#除以要跳过的标签的#,并将其用作偏移量。似乎GD::Graph总是希望打印最后一个标签,因此无法控制它,但您可以控制要打印的第一个标签。对我来说似乎是倒退,但不管怎样
my $graph = GD::Graph::lines->new(400, 500);
my $skip = int ((@tmpDate * 8)/(400-50) + 1); # a function of # of data points, each label 8px. More labels, more skip.
$graph->set(
r_margin => 2,
x_label => 'Date',
y_label => 'Price',
title => "$symbol1, $symbol2",
dclrs => [ qw(lred lblue lgreen lyellow lpurple cyan lorange) ],
transparent => 0,
x_labels_vertical => 1,
x_label_skip => $skip,
x_tick_offset => @tmpDate % $skip, # ensure last label doesn't overwrite second-to-last label
) or die $graph->error;
完全按照您的需要工作,只需跳过最后一个标签。可能它没有在2012年实施,但现在已经实施了
my $graph = GD::Graph::lines->new(400, 500);
my $skip = int ((@tmpDate * 8)/(400-50) + 1); # a function of # of data points, each label 8px. More labels, more skip.
$graph->set(
r_margin => 2,
x_label => 'Date',
y_label => 'Price',
title => "$symbol1, $symbol2",
dclrs => [ qw(lred lblue lgreen lyellow lpurple cyan lorange) ],
transparent => 0,
x_labels_vertical => 1,
x_label_skip => $skip,
x_tick_offset => @tmpDate % $skip, # ensure last label doesn't overwrite second-to-last label
) or die $graph->error;