2015-04-19 5 views
1

Мне удалось создать код, который будет непрерывно отправлять точки данных из программы C в gnuplot, чтобы показать эволюцию зависимого от времени уравнения Шредингера. Это функция, я сделал, который повторяется в цикле, который обновляет WF[] каждое значение: (Оба x[] и WF[] являются 1d)Данные о трубопроводах в Gnuplot от C

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 

в сортире p, когда «с указанными строками», два графика соединяются вместе (точки сюжета соединяются). Использование точек решает это, но я хотел бы, чтобы оба графика были отдельно связаны с линиями и, надеюсь, разными цветами. Может кто-нибудь помочь?

Это форма сюжета я хотел бы:

enter image description here

ответ

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"); 
} 
+0

решаемые и прекрасно работает, спасибо много –

+0

Вы также знаете, могу ли я рисовать в одно и то же окно gnuplot после каждой команды, а не закрывать и открывать новое окно каждый раз? –

+0

Это зависит от вашей общей структуры программы. Если вы вызываете только функцию 'gnuprint', она должна всегда отображаться в том же окне. – Christoph

Смежные вопросы