使用replot时,PDL Gnuplot和QT终端的点限制

9
使用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);
    }
}

使用此示例,仅绘制了11条线而不是15条线。using 101 points 减少点的数量(从101个到51个),绘制了14条线。 using 51 points 最后,仅使用21个点,所有15条线都会显示出来。

using 21 points

首先,我以为只有有限数量的线条被绘制,但这不是真的,因为所绘制的线条数量取决于piddles的大小。
这是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);

使用此代码,一切都正常工作(即使将行数增加到显著更大的值)。

101 points in a single plot

最终看起来似乎是“qt”终端的“replot”功能出现了问题。
(GNU PLOT版本4.6修补程序6)

4
这听起来像是一个bug。你应该向PDL::Graphics::Gnuplot的维护者在这里报告它。 - ThisSuitIsBlackNot
1个回答

1
我已经在PDL::Graphics::Gnuplot上提出了一个问题 - 希望现在Gnuplot升级到5.4版本后不会有问题!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接