Perl PDL - > GnuPlot - > AutoScale => 95%的WhiteSpace?

时间:2016-05-19 16:12:23

标签: pdl

要绘制的3个XY数据集:

A) Function plot XY
B) Polynomial, shares X with function, Y is poly_eval(x)
C) Polynomial_error;  X, Y=poly(x) - fct(x)
Range X:  ]0.0 .. 1.0[  (full range 0->1 plus some extra, both sides
Range Y:  ]0.0 .. 1.0[

通缉:所有3个XY数据集都要自动缩放,就好像它是唯一的数据集一样。 期待:"小",空白高于/低于
误差数据跨越整个Y范围,而不是在Y = 0附近的~0范围

结果:Y范围[-10 .. 10]
误差线是图中间的平线,内容为~0。 在整个20单位Y范围内,只有[0 .. 1]有任何数据,因此95%是空白。

IDEAL" Auto"缩放:支持"标准偏差"在一些"外围"数据点将从图表中推出,以更好地显示大量数据。

案例:错误XY数据。在极端情况下,Y误差值与平均值相比是巨大的,大约14个西格玛。自动缩放将98%的数据压缩到零像素内。

如果我计算标准差并手动将yrange => [$ ylo,$ yhi]设置为平均值+ - 1 sigma,它看起来很有用。

除了最大/分钟或数量级AUTOSCALE之外,还有什么办法可以获得REASONABLE-SCALE吗?

#!/usr/local/bin/perl -w

use PDL::IO::Misc;
use PDL::Graphics::Gnuplot;
use PDL::Fit::Polynomial;
use PDL::Core;
use List::Util qw(max min);

for($mi=0; $mi < scalar @mxa; $mi++)  {
    @xara = @{$mxa[$mi]};  # @MXA => Array of @xara 
    @yara = @{$mya[$mi]};  # @MYA => Array of @yara 
    $px   = pdl(\@xara);  
    $py   = pdl(\@yara);
    if($mi > 0)  {
        $pw->replot(with=>"lines", linewidth=>5, $px, $py);  # autoscale=>'', 
        next;  
    }
    # Use autoscale=>'' to "set [autoscale] all the axes at once" 
    $pw=gpwin("png", output=>"$imgfn", size=>[$pxres,$pyres,'px'],font=>"=11");
    $pw->plot(title=>"$title", xrange=>[$xlo, $xhi], xlab=>"$xlbl", 
        ylab=>["$ylbl", "offset 1"], autoscale=>'', 
        with=>"lines", linewidth=>5, linetype=>2, linestyle=>1, $px, $py);
}  # End For MI

AutoScale with 5% Data

0 个答案:

没有答案