从C管道数据到Gnuplot

时间:2015-04-19 13:49:52

标签: c plot pipe gnuplot

我设法创建了一些代码,这些代码将连续地将数据点从C程序发送到gnuplot,以显示时间相关的薛定谔方程的演变。这是我所做的功能,它在循环中迭代,每次更新WF[]值: ({1}}和x[]都是1d)

WF[]

我接下来要做的是在同一个绘图中绘制虚拟点,这些点位于数组中真实的旁边:void gnuprint(FILE *gp, double x[], int N) { int i; fprintf(gp, "plot '-' with lines\n"); for (i=0; i<N; i++){fprintf(gp, "%g %g\n", x[i],WF[2*i+1]);} fflush(gp); fprintf(gp, "e\n"); } x[i]

如果我只是添加一个

WF[2*i+2]

进入循环,当&#39;用线&#39;指定时,两个图连在一起(绘图点连接起来)。使用圆点解决了这个问题,但我希望这两个图分别与线条相关联,并希望有不同的颜色。有人可以帮忙吗?

这是情节的形式我喜欢:

enter image description here

1 个答案:

答案 0 :(得分:0)

通过管道传输到gnuplot的数据只能使用一次。因此,如果您想要两个具有不同颜色的图表,则必须使用'-'两次,然后依次发送数据集,以e分隔:

void gnuprint(FILE *gp, double x[], int N)
{     
    int i;
    fprintf(gp, "plot '-' with lines, '-' with lines\n");

    for (i=0; i<N; i++){fprintf(gp, "%g %g\n", x[i],WF[2*i+1]);}
    fflush(gp);
    fprintf(gp, "e\n");

    for (i=0; i<N; i++){fprintf(gp, "%g %g\n", x[i],WF[2*i+2]);}
    fflush(gp);
    fprintf(gp, "e\n");  
}
相关问题