我有这个简单的自包含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
曲线在输出中都显示正常:
但是现在看一下当我通过将xrange
行更改为:
set xrange [50:30]
其他一切保持不变,输出中现在缺少csplines
曲线,而点仍然正确显示:
如何在第二种情况下显示csplines
曲线?
(即从右到左轴。)
答案 0 :(得分:1)
确实看起来输出并不理想。使用Gnuplot 5.0.6,我得到一个空图,如问题所示,而使用Gnuplot 5.2.2时,图如下所示:
作为修复,可以首先构造插值,通过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
这会产生:
编辑:
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