【问题标题】:Opening GnuPlot by my program in C通过我的 C 程序打开 GnuPlot
【发布时间】:2012-11-19 00:10:51
【问题描述】:

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

【问题讨论】:

  • 如果您遇到从命令行调用的相同的错误,那么这与您的c 代码完全没有关系。关注这样的事情将帮助您在未来更快更好地调试。您已经知道要研究应该如何调用 gnuplot,这意味着您应该阅读文档。

标签: c linux export gnuplot


【解决方案1】:

你必须像这样调用 gnuplot:

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

在 C 中:

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

【讨论】:

  • 选项 -p 和 -e 有什么作用?请解释一下。
【解决方案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");

【讨论】:

  • 这是我的首选方法,当您开发更复杂的绘图命令时,您将拥有该文件来查看调试。还可以避免一些令人头疼的事情,因为它们会逃离外壳。在许多情况下,无论如何保存该文件很有用,但显然这取决于您在做什么。
【解决方案3】:

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

最好的输入方式是:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    相关资源
    最近更新 更多