绘制数据文件。 make:results2.data:commande introuvable

时间:2014-12-26 22:41:20

标签: gnuplot

我遇到了一个gnuplot实验。我是gnuplot的新手,我正在尝试探索gnuplot选项和种类。

首先,这是我要做的事情:从c程序我想绘制5个数据文件。尽管如此,我使用.gplt文件,makefile和a.c文件(在lubuntu上使用geany)。

以下是文件的样子:

=================== simulation.gplt ====================

plot 'result1.data' using 2:3 title "F" w lines
plot 'result2.data' using 2:3 title "F" w lines
plot 'result3.data' using 2:3 title "F" w lines
plot 'result4.data' using 2:3 title "F" w lines
plot 'result5.data' using 2:3 title "F" w lines

set ouput "simulation.ps"
replot

=================生成文件============================= =在这里输入代码

all:run plot

plot: result1.data
      result2.data
      result3.data
      result4.data 
      result5.data
    gnuplot simulation.gplt
    ps2pdf simulation.ps
    rm -f simulation.ps
    evince simulation.pdf

run:program
    ./program

program: program.c
    gcc -Wall -o program -O3 program.c -lm -g

clean:
      rm -f program
      rm -f result1.data
      rm -f result2.data
      rm -f result3.data
      rm -f result4.data
      rm -f result5.data
      rm -f simulation.pdf
      rm -f simulation.ps

............................................... ........

我可以在终端上打字清洁,外观似乎没问题。然而,当我输入“make”时,我会看到这两条消息:

make:result2.data:unknown命令 make **** [plot] error 127

重点:任何人都可以帮忙吗?我觉得Makefile中的错误,我试图多次修复它,但仍会出现相同的消息。

1 个答案:

答案 0 :(得分:0)

首先,我编辑了您的问题,并在每行代码的开头添加了四个空格。通过这种方式,您可以获得良好的格式。

现在,我在make文件和gnuplot代码中看到了几个问题:

gnuplot的

您的代码会在屏幕上生成四个图,每个图都会覆盖最后一个图。然后,您打开一个文件并执行replot。此命令重复最后一个绘图命令,即只将result5.data写入文件。 接下来,仅设置输出文件是不够的。您必须先指定终端(文件类型)。

这将生成一个5页的PS文件,每页上有一个图:

set terminal postscript
set output "simulation.ps"
plot 'result1.data' using 2:3 title "F" w lines
plot 'result2.data' using 2:3 title "F" w lines
plot 'result3.data' using 2:3 title "F" w lines
plot 'result4.data' using 2:3 title "F" w lines
plot 'result5.data' using 2:3 title "F" w lines
unset output

或者,如果您想要单个图表中的所有数据,请使用:

set terminal postscript
set output "simulation.ps"
plot 'result1.data' using 2:3 title "F" w lines,\
     'result2.data' using 2:3 title "F" w lines,\
     'result3.data' using 2:3 title "F" w lines,\
     'result4.data' using 2:3 title "F" w lines,\
     'result5.data' using 2:3 title "F" w lines
unset output

注意:五个绘图对象用逗号分隔。并且反斜杠\允许在下一行继续(因此,实际上只有一行具有大的绘图命令)

但是,没有必要使用gnuplot生成postscript文件,然后将其转换为PDF。 gnuplot可以直接生成PDF:

set terminal pdfcairo mono dashed size 8in, 11in
set output "foo.pdf"
plot sin(x), cos(x)
unset output

在这里,我添加了选项来生成DIN A4纸张尺寸,黑色/白色而不是彩色,以及虚线。有很多选项,请在gnuplot中使用help pdfcairo

进行检查

生成文件

先决条件列表必须在一行中给出。但是就像在gnuplot中一样,你可以使用\来跨越多行:

plot: result1.data \
      result2.data \
      result3.data \
      result4.data \
      result5.data
    gnuplot simulation.gplt
    ps2pdf simulation.ps
    rm -f simulation.ps
    evince simulation.pdf    

这正是错误消息告诉您的内容:它希望处理规则" plot"。 results1.data已经存在,然后,它尝试在第二行运行命令,即results2.data。由于这不是一个命令,你会得到错误。

另一个问题是make必须在每个命令行前面都需要一个制表工具,而不仅仅是空格。确保你的编辑器插入标签,很多人喜欢插入四个空格! (此处无法检查此错误,因为此处不显示选项卡。)