2

我希望我的程序自动打开 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()或修复第一种方法。谢谢你的帮助!!!

4

3 回答 3

3

您必须像这样调用 gnuplot:

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

在 C 中:

system("gnuplot -p -e \"plot '/home/user/Desktop/program/data.txt'\"");
于 2012-11-19T00:31:45.963 回答
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"

于 2012-11-19T00:20:10.623 回答
2

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

FILE* f = fopen("myfile", "wt");
fprintf(f, "plot '%s'\n", "/home/user/Desktop/program/data.txt");
fclose(f);
system("gnuplot < myfile");
于 2012-11-19T00:20:25.453 回答