【问题标题】:Use gnuplot to plot from c during runtime [closed]在运行时使用 gnuplot 从 c 绘图 [关闭]
【发布时间】:2016-12-10 14:43:42
【问题描述】:

我需要一些关于使用 gnuplot 从 c 进行绘图的帮助:

我的 c 源代码计算一些点并将它们的 x/y 值存储在数组中。它还通过最小二乘法计算这些点的多项式拟合。现在我需要在 c 源代码运行时将这些点以及拟合函数绘制到图形中。我对 gnuplot 没有经验,而且 gnuplot 的在线资源真的很难理解。

  • 主要想法是包含一个库,该库具有 gnuplot 的命令并将我的数组提供给这些函数吗?
  • 谁能给我一个实现这一点的例子吗?

如果有人能帮助我解决这个非常基本的问题,我将非常感激。

【问题讨论】:

  • C 和 C++ 是不同的语言。弄清楚你实际使用的是哪一个。
  • 通常,您会使用 gnuplot 绘制一个包含已有数据的文本文件。 gnuplot 是一个独立的程序,它以自己的脚本语言运行脚本,并根据脚本生成输出。它没有像库那样的 API。例如,您可以使用管道破解某些东西,但这不是使用 gnuplot 的典型或预期方式。我建议将 C 程序的输出写入文件,然后使用 gnuplot 处理文件。
  • 也许我错了。我发现this page 描述了为 gnuplot 提供“接口”的其他库。但我认为它们都是通过动态生成脚本并通过管道将脚本和数据提供给作为单独进程运行的 gnuplot 来工作的。 gnuplot 仍然没有直接的应用程序接口 (API)。

标签: c gnuplot


【解决方案1】:

如果你确实需要从 C 中使用 gnuplot,那么你可以使用popen() 来启动一个 gnuplot 进程,然后使用 fprintf() 向它发送命令,如下所示:

void plot_array(float *x, float *y, int n) {
  FILE *p = popen("gnuplot", "w");

  fprintf(p, "plot - with lines\n");

  for(int i = 0; i < n; i++)
    fprintf(p, "%f %f\n", x[i], y[i]);

  fprintf(p, "e\n");
  ...
  pclose(p);
}

但是,周围有很多绘图库为您提供了一种更惯用的从 C 中绘制数组的方法。如果您可以使用 C++,那么 gnuplot-iostream library 基本上可以为您完成上述工作。

【讨论】:

    猜你喜欢
    • 2011-05-25
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多