Как мне не дать GD :: Graph написать последнюю метку X и перезаписать другие мои метки? - PullRequest
6 голосов
/ 01 апреля 2012

Я установил x_label_skip, чтобы пропустить метки, но он все еще пытается отобразить самую последнюю метку и перезаписывает другую метку, и выглядит грязно.Это не должно писать последний ярлык.Стоит пропустить последний ярлык.Я установил количество пропускаемых меток в зависимости от количества точек данных.

Вот как это выглядит:

Код:

my $graph = GD::Graph::lines->new(400, 500);
$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      => int ((@tmpDate * 8)/(400-50) + 1), # a function of # of data points, each label 8px. More labels, more skip.
) or die $graph->error;

Ответы [ 2 ]

5 голосов
/ 01 апреля 2012

Хорошо, я нашел это. Просто используйте модуль по модулю, чтобы разделить # записей на # меток, чтобы пропустить, и используйте это как смещение. Кажется, 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;
0 голосов
/ 14 апреля 2015

x_last_label_skip => 1 работает именно так, как вам нужно, просто пропуская последний ярлык. Возможно, это не было реализовано в 2012 году, но сейчас это так.

...