我的程序在C中打开GnuPlot

时间:2012-11-19 00:10:52

标签: c linux export gnuplot

我希望我的程序自动打开GNUplot并绘制给定文件中的图形。不幸的是,它不能正常工作:

system("gnuplot> plot '/home/user/Desktop/program/data.txt'");

程序运行gnuplot但我从gnuplot中不断得到错误:

ivalid command

此外,我在命令行中输入了以下内容:

gnuplot> plot '/home/user/Desktop/program/data.txt'

我也遇到了同样的错误,但首次输入gnuplot然后

plot '/home/user/Desktop/program/data.txt'

它运作正常。

因此结论是我应该在我的程序中使用第二种方法(但我不知道如何使用system()放置一些命令或修复第一种方法。感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

你必须像这样调用gnuplot:

gnuplot -p -e "plot '/home/user/Desktop/program/data.txt'"

在C:

system("gnuplot -p -e \"plot '/home/user/Desktop/program/data.txt'\"");

答案 1 :(得分:2)

需要了解操作系统,但假设有一个linux变体:>是输出重定向。正如您已经发现的那样,它不是一个有效的命令。

最佳输入方式是:

A)检查是否gnuplot有一个命令行参数,因此它可以从命令行获取命令。 例如gnuplot -command plot data.txt(这是一个样本,我做了。不知道是否有'-command'之类的东西)

B)@anatolyg在他的回答中写道:您可以将命令写入文件,然后告诉gnuplot读取该文件。这与方法A类似。(不要忘记在使用后删除临时文件)

C)回应命令和管道到gnuplot。例如echo plot '/home/user/Desktop/program/data.txt' | gnuplot"

答案 2 :(得分:2)

尝试将gnuplot命令plot '/home/user/Desktop/program/data.txt'放入文件中,例如myfile,并告诉gnuplot从中读取:

FILE* f = fopen("myfile", "wt");
fprintf(f, "plot '%s'\n", "/home/user/Desktop/program/data.txt");
fclose(f);
system("gnuplot < myfile");