我正在尝试使用Gnuplot 4.6补丁级别4中的以下代码在一个splot中绘制一条虚线:
set terminal "pdfcairo" enhanced dashed size 15,10
set pm3d map
set output "test.pdf"
splot 'map.dat' using 1:($2/1000):3 notitle, \
'line1.dat' using 1:($2/1000):1 notitle with lines ls 2, \
'line2.dat' using 1:($2/1000):1 notitle with lines ls 2
unset output
热图有效,line1.dat也有效。但是,第二行似乎主要是实心的。不同之处在于line1.dat有70个条目,line2.dat有900个。第二行在两个点之间有一个跳跃,并且在那里点缀。
有人知道如何改变点密度,使整条线看起来都是点状的。无法更改原始数据文件。
感谢您的帮助,
不一
编辑:
我找到的一个解决方法是
splot 'line2.dat' every ...
但这可能会导致数据跳跃变得不方便。
答案 0 :(得分:1)
命令(s)plot 'line.dat' with lines
首先绘制数据点,然后使用具有相应线型的线连接数据点。如果数据点彼此太靠近,则在使用虚线样式时没有空位。
要显示虚线/虚线,您可以尝试通过函数替换点或减少点数。
尝试使用虚线而不是虚线。 Linestyle和linecolor可以单独设置:splot 'line.dat' with lines ls 0 lc 2
。对于这种方法,900点可能太多了。
安装一个函数会起作用,但可能很难找到合适的函数。
every
选项可减少积分数。
减少点数的另一种可能性是使用smooth
选项插入点。这需要一个临时文件,其工作方式如下:
# [prepare plot]
set samples 100
set table "line2.dat.tmp"
plot 'line2.dat' using 1:($2/1000) smooth mcsplines with lines ls 2
unset table
set terminal "pdfcairo" enhanced dashed size 15,10
set pm3d map
set output "test.pdf"
# [plot]
splot 'map.dat' using 1:($2/1000):3 notitle, \
'line1.dat' using 1:($2/1000):1 notitle with lines ls 2, \
'line2.dat.tmp' using 1:2:1 notitle with lines ls 2
unset output
在[准备情节]部分中,临时文件" line2.dat.tmp"创建的内容包含插入line2.dat的数据点。您必须使用set samples
来获得正确的积分数。在该示例中,我们有100个等距点而不是900个具有不同距离的点。
选项smooth mcsplines
保留原始数据点的单调性和凸性,请参阅gnuplot shell中的help smooth mcsplines
。
在[plot]部分中,原始" lines2.dat"由插值数据代替。
如果原始数据足够平滑以便将900点替换100点不会跳过重要信息,则此方法有效。也许你想绘制" lines2.dat"和" lines2.dat.tmp"在单个图表中进行比较。
答案 1 :(得分:0)
使用every关键字,如下所示:
'line2.dat' every 20 using 1:($2/1000):1 notitle with lines ls 2