将数据从 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");
}
我已经设法创建了一些代码,这些代码会不断地将数据点从 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");
}