重新绘制不在gnuplot上工作

时间:2016-09-19 09:29:35

标签: loops gnuplot

我想在单个图像中绘制不同的线条。每行保存在不同的纯文本文件中,它包含:x | y |深度。因此,我写了这个名为'plot_vg'的文件:

set term pngcairo size 1000,8005

list = system('ls')
i = 1

set output 'image.png'

do for [file in list] {
if (file ne 'image.png') {
   if (file ne 'plot_vg') {
       if (file ne '..') {
         if (i==1) {
           i=0
           plot sprintf('%s',file) using 1:2:3 with lines notitle
         } else{
           replot sprintf('%s',file) using 1:2:3 with lines notitle
         }
       }
    }
}
}

我的问题是,最后,保存的图像只是最后一个重绘图而不包括其余的行。我已经看到它进入循环并且它完成了1个情节然后,其余的都是重复的。如果我从术语打开gnuplot并且我先编写1个绘图然后重新编写,则显示的图像就是我想要的。这里的错误在哪里?

我从这里Gnuplot - Using replot with png terminal尝试了第一个选项,但我得到一个空白的图像文件。

1 个答案:

答案 0 :(得分:1)

在您阅读文件列表时已经进行了过滤,然后使用plot for [file in list]...进行迭代:

set term pngcairo size 1000,8005

list = system("ls | grep -v 'image.png\|plot_vg'")

set output 'image.png'

set style data lines
unset key
plot for [file in list] file using 1:2

如果您的数据文件遵循某种模式,您也可以使用类似

的内容
list = system("ls *.txt")

另请注意,简单的plot with lines仅使用两列。