我希望我的程序自动打开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()
放置一些命令或修复第一种方法。感谢您的帮助!
答案 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");