Ограничение по точкам для PDL Gnuplot и QT-терминала, использующего реплот
При использовании PDL::Graphics::Gnuplot для отображения данных я натолкнулся на странный эффект. Кажется, только ограниченное количество точек строится за один раз, используя replot
,
Рассмотрим следующий пример (15 строк по 101 баллу):
use strict;
use warnings;
use PDL;
use PDL::Graphics::Gnuplot qw/gpwin/;
my $win = gpwin('qt', persist => 1);
foreach my $a (1..15) {
my $x = sequence(101)/100;
my $y = $a*$x;
if ($a == 1) {
$win->plot({ linecolor => 'black' }, $x, $y);
}
else {
$win->replot({ linecolor => 'black' }, $x, $y);
}
}
Используя этот пример, только 15 линий строятся вместо 15.
Сокращая количество точек (с 101 до 51), строятся 14 линий.
И, наконец, используя только 21 точку, отображаются все 15 линий.
Во-первых, я думал, что наносится только ограниченное количество линий, но это не так, поскольку количество нанесенных линий зависит от размера пидл.
Это предел модуля perl или Gnuplot? Есть ли способ увеличить количество максимальных баллов? Кажется, это проблема версии Gnuplots qt. С помощью 'x11'
так как терминал не показывает это ограничение (я тестировал 100 линий с 101 баллом без проблем).
Далее я тестирую тот же пример без использования replot
но в одном plot
,
use strict;
use warnings;
use PDL;
use PDL::Graphics::Gnuplot qw/gpwin/;
my $win = gpwin('qt', persist => 1);
my $x = sequence(101)/100;
my $a = sequence(1,15)+1;
my $y = $x*$a;
$win->plot({ linecolor => 'black' }, $x, $y);
С помощью этого кода все работает нормально (даже при увеличении количества строк до значительно больших значений).
Итак, наконец, это, кажется, проблема replot
функциональность 'qt'
Терминал.
(GNUPLOT версии 4.6, уровень исправлений 6)
1 ответ
Я открыл вопрос по PDL::Graphics::Gnuplot - надеюсь, учитывая, что Gnuplot теперь на 5.4, это не будет проблемой!