Gnuplot:绘制范围中每N个点(包括间隔边)的图

时间:2019-04-15 13:48:07

标签: gnuplot

我有一些大约有1万条记录的数据文件;每条记录都包含一个值加上该值的标准偏差。

我正在将标准偏差绘制为稍微透明的filledcurve。但是,由于有些怪异的物件在绘制很多点,所以我不得不使用every命令来绘制每99个点。

'$1' using 1:(\$3-\$5):(\$3+\$5) every 99::0 with filledcurves ls $COUNTER notitle

这很好用;但是我的问题是,取决于文件中有多少确切记录,every命令可能会跳过最后一个条目,最后一个条目是彩色标准偏差区域,该区域在其相应行之前结束。

Missing std

是否有任何方法可以将最后一条记录包括到每个命令/填充图中,从而使彩色区域扩展到需要的地方?

编辑:我要避免的效果是这样的:

flickery plot

在处理新数据时,我似乎无法真正重现atm,但是我敢肯定,偶尔采摘点会避免这种情况。

2 个答案:

答案 0 :(得分:2)

[经修改以显示NaN值的完整处理。用真实的数据文件进行了演示]

您可以代替every来为using说明符构造过滤器功能。

set xrange [100:600]
xmax = 600
filter(x) = (int(column(0))%9 == 0  ||  x == xmax) ? 1 : 0
set datafile missing NaN
plot 'silver.dat' using (filter($1)?$1:NaN) : ($2-$3) : ($2+$3) with filledcurves, \
     '' using 1:2 with lines

enter image description here

答案 1 :(得分:0)

您在绘制约10k透明数据点时提到了虹彩图案吗?尽管不同的终端看起来有所不同,但是在Win7下,我无法使用gnuplot 5.2.6观察这种行为,或者我们正在谈论的是不同的事情。也许您的数据,终端或操作系统很特别?

测试代码:

### transparent error range
reset session
# set term wxt size 600,600
# set term qt size 600,600
set term pngcairo size 600,600
set output "ErrorRangePNGCairo.png"
set key left

GenerateData = 'set print $Data; \
    do for [i=1:Max] { print sprintf("%g\t%g\t%.3f",i,i+rand(0)*Max*0.1,rand(0)*Max*0.1+Max*0.05) }; \
    set print'

PlotData = 'plot \
        $Data u 1:($2+$3):($2-$3) w filledcurves lc rgb "#aaff0000" t "Error",\
        "" u 1:2 w l lc rgb "red" t "Data"'

set multiplot layout 3,1
    Max = 100
    @GenerateData
    @PlotData

    Max = 1000
    @GenerateData
    @PlotData

    Max = 10000
    @GenerateData
    @PlotData
unset multiplot
set output
### end of code

wxt终端:

enter image description here

qt终端:

enter image description here

pngcairo终端:

enter image description here