Я создаю график цен с течением времени. Поскольку у меня есть даты на оси X, я преобразовал их в дни, начиная с эпохи. Дни, прошедшие с начала эпохи, не очень понятны для отображения на графике, поэтому я хочу преобразовать их обратно в удобочитаемые даты, используя опцию x_number_format.
Но ... это не называется график отображается.
Я создал следующий тестовый код для демонстрации проблемы.
use strict;
use GD::Graph::points;
# Generate some random data!
my @x_data;
my @y_data;
for (1...20) {
push @x_data, $_;
push @y_data, rand(20) + 10;
}
# This is never called - possible bug!
sub x_format {
print "X Formatter!\n";
return " - $_[0] - ";
}
# This gets called for every Y-axis point
sub y_format {
print "Y Formatter!\n";
return " - $_[0] - ";
}
my $graph=GD::Graph::points->new(1000,450);
$graph->set(
y_label => 'Random numbers',
y_number_format => \&y_format,
x_number_format => \&x_format,
x_label => 'Sequential meaningless numbers',
x_labels_vertical => 1,
x_plot_values => 1,
);
my @data=(
[ @x_data ],
[ @y_data ],
);
open PNG, ">temp.png";
binmode PNG;
print PNG $graph->plot(\@data)->png;
close PNG;
system("temp.png");
Этот тестовый код создает ожидаемый график и печатает Y Formatter!
6 раз. Один для каждой точки на оси Y. Тем не менее, он не печатает X Formatter!
и не форматирует ось X.
Я попытался отформатировать значения оси X более напрямую с помощью
x_number_format => sub { " - $_[0] - " },
Это не ' либо отформатируйте ось X.
Я делаю что-то глупое или это ошибка в GD: Graph? На странице ошибок GD :: Graph нет сообщений об ошибке