如何展示"顺畅的csplines"在Gnuplot中具有从右到左的x轴的曲线上的曲线

时间:2018-02-04 13:14:13

标签: gnuplot axis cubic-spline

我有这个简单的自包含gnuplot脚本:

set terminal png size 400,300
set output 'test.png'

unset key

set xrange [30:50]

$data << EOD
42, 5.7
44, 8.1
46, 8.9
48, 9.2
50, 9.3
EOD

plot "$data" using 1:2 smooth csplines, \
     "$data" using 1:2 with points

点和csplines曲线在输出中都显示正常:

gnuplot output 1

但是现在看一下当我通过将xrange行更改为:

来反转x轴方向时会发生什么
set xrange [50:30]

其他一切保持不变,输出中现在缺少csplines曲线,而点仍然正确显示:

enter image description here

如何在第二种情况下显示csplines曲线?
(即从右到左轴。)

1 个答案:

答案 0 :(得分:1)

确实看起来输出并不理想。使用Gnuplot 5.0.6,我得到一个空图,如问题所示,而使用Gnuplot 5.2.2时,图如下所示: enter image description here

作为修复,可以首先构造插值,通过set table将其保存到文件中,然后以“反向”顺序将所有内容绘制在一起:

unset key

set xrange [30:50]

$data << EOD
42, 5.7
44, 8.1
46, 8.9
48, 9.2
50, 9.3
EOD

set table 'meta.csplines.dat'
plot "$data" using 1:2 smooth csplines
unset table

set xrange [50:30]
plot 'meta.csplines.dat' using 1:2 w l lw 2, \
     "$data" using 1:2 with points

这会产生:

enter image description here

编辑:

set table命令可以与数据块结合使用,以避免创建临时文件(如果需要):

unset key

set xrange [30:50]

$data << EOD
42, 5.7
44, 8.1
46, 8.9
48, 9.2
50, 9.3
EOD

set table $meta
plot "$data" using 1:2 smooth csplines
unset table

set xrange [50:30]
plot "$meta" using 1:2 w l lw 2, \
     "$data" using 1:2 with points