Gnuplot:改变splot中虚线的密度

时间:2016-10-22 09:32:03

标签: gnuplot heatmap dotted-line

我正在尝试使用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 ...

但这可能会导致数据跳跃变得不方便。

2 个答案:

答案 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