对于用C编写的终端应用程序,我需要(在终端中)绘制两个表作为线形图。要做到这一点,我使用(例如gnu tutorial)
FILE *gnuplot = popen("gnuplot", "w");
...
fprintf(gnuplot, "plot '-' u 1:2 t 'data1' w lp lt 0n");
for (int i = 0; i < lines; ++i) {
fprintf(gnuplot,"%f %f n", x[i] - x[0], y[i]);
}
fprintf(gnuplot, "n");
fprintf(gnuplot, "t 'data2' lt 2n");
for (int i = 0; i < lines; ++i) {
fprintf(gnuplot,"%f %f n", x[i] - x[0], 0.4*(x[i] - c0)/c1);
}
fprintf(gnuplot, "en");
fflush(gnuplot);
问题是数据被绘制为一个数据块,而不是两个不同的数据块。我希望使用
行来分隔fprintf(gnuplot, "t 'data2' lt 2n");
似乎不是这样。这段代码有什么问题?
您可能希望执行以下操作。每个内联数据必须以e
结束。在gnuplot控制台中,它将是:
plot '-' u 1:2 t 'data1' w lp lt 0, '' u 1:2 t 'data2' lt 2
1 0.1
2 0.2
3 0.3
4 0.4
e
11 0.5
12 0.6
13 0.7
14 0.8
e
检查help inline data
和help special-filenames
。虽然,在我看来,这有点令人困惑,而且缺少合适的例子。也许你可以在别的地方找到。