PDL::Graphics::Gnuplot を使用してデータをプロットしているときに、奇妙な現象に遭遇しました。を使用して一度にプロットされるポイントの数は限られているようですreplot
。
次の例を考えてみましょう (101 ポイントの 15 ライン):
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 行ではなく 11 行だけがプロットされます。
点の数を (101 から 51 に) 減らすと、14 本の線がプロットされます。
そして最終的に21点だけを使って、15本の線をすべて表示。
最初は限られた数の線しかプロットされていないと思っていましたが、プロットされる線の数はピドルの大きさに依存するため、そうではありません。
これは perl モジュールまたは Gnuplot の制限ですか? 最大ポイント数を増やす方法はありますか?Gnuplots qt 版の問題のようです。端末として使用'x11'
しても、この制限は見られません (101 ポイントで 100 回線をテストしましたが、問題はありませんでした)。
さらに、同じ例を使用せずにテストします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)