将数据从 C 管道传输到 Gnuplot

Piping data to Gnuplot from C

我已经设法创建了一些代码,这些代码会不断地将数据点从 C 程序发送到 gnuplot,以显示随时间变化的薛定谔方程的演变。这是我创建的函数,它在一个循环中迭代,每次更新 WF[] 值: (x[]WF[]都是1d)

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]

如果我只是添加一个

fprintf(gp, "%g %g\n", x[i],WF[2*i+2]); //The imaginary values

进入循环,当'with lines'指定时,两个情节link在一起(情节点连起来)。使用点可以解决这个问题,但我希望两个图分别用线条 link 编辑,希望颜色不同。有人可以帮忙吗?

这是我想要的情节形式:

通过管道传输到 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");  
}