Pagina 3 di 5
Re: [c]utilizzare gnuplot
Inviato: lunedì 19 gennaio 2009, 16:29
da Zoff
cristian_c ha scritto:
(good) Ora finalmente la radice cubica viene disegnata! Grazie!
Ora rimane il problema che la finestra di gnuplot scompare appena si fa qualsiasi cosa con i mouse (come fare clic in qualsiasi punto dello schermo del desktop):
Codice: Seleziona tutto
cristiancozzolino@cristiancozzolino-laptop:~$ cd programmazione/
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$ gcc radice.c -o radice -lm
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$ ./radice
// il programma calcola la radice
// di un qualunque numero reale scelto dall'utente
// con indice intero immesso da tastiera
Inserire un indice valido per la radice(un numero intero da 1 a 10): 3
Inserire un valore reale di cui calcolare la radice: 45
la radice cubica di 45 è 3.55689
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$
** (<unknown>:8248): WARNING **: Failed to send buffer
<unknown>: Fatal IO error 11 (Risorsa temporaneamente non disponibile) on X server :0.0.
strano l'opzione -persist dovrebbe evitare proprio quello... Infatti a me rimane...
Controlla di aver scritto bene oppure leggiti bene il manuale...
Re: [c]utilizzare gnuplot
Inviato: mercoledì 21 gennaio 2009, 16:18
da cristian_c
strano l'opzione -persist dovrebbe evitare proprio quello... Infatti a me rimane...
si,ma infatti con il codice precedente appariva sullo schermo la finestra di gnuplot per un decimo di secondo e poi spariva.
Ora, come ho detto, la finestra resta. Ma appena si svolge una qualsiasi operazione (per esempio con il mouse), questa sparisce e nel terminale appare il messaggio di errore riportato nel post precedente.
Nella guida a gnuplot che ho seguito non si fa riferimento a questo problema :-\
Re: [c]utilizzare gnuplot
Inviato: mercoledì 21 gennaio 2009, 17:05
da Zoff
cristian_c ha scritto:
strano l'opzione -persist dovrebbe evitare proprio quello... Infatti a me rimane...
si,ma infatti con il codice precedente appariva sullo schermo la finestra di gnuplot per un decimo di secondo e poi spariva.
Ora, come ho detto, la finestra resta. Ma appena si svolge una qualsiasi operazione (per esempio con il mouse), questa sparisce e nel terminale appare il messaggio di errore riportato nel post precedente.
Nella guida a gnuplot che ho seguito non si fa riferimento a questo problema :-\
A me questo codice crea una finestra visibile anche dopo i click:
Codice: Seleziona tutto
#include
main(){
system("echo 'plot x**2' | gnuplot -persist");
}
Re: [c]utilizzare gnuplot
Inviato: mercoledì 21 gennaio 2009, 18:08
da cristian_c
Zoff ha scritto:
cristian_c ha scritto:
strano l'opzione -persist dovrebbe evitare proprio quello... Infatti a me rimane...
si,ma infatti con il codice precedente appariva sullo schermo la finestra di gnuplot per un decimo di secondo e poi spariva.
Ora, come ho detto, la finestra resta. Ma appena si svolge una qualsiasi operazione (per esempio con il mouse), questa sparisce e nel terminale appare il messaggio di errore riportato nel post precedente.
Nella guida a gnuplot che ho seguito non si fa riferimento a questo problema :-\
A me questo codice crea una finestra visibile anche dopo i click:
Codice: Seleziona tutto
#include
main(){
system("echo 'plot x**2' | gnuplot -persist");
}
a me invece mi crasha anche con il file gnuplot.c ::) :-\ ???
Codice: Seleziona tutto
cristiancozzolino@cristiancozzolino-laptop:~$ gcc gnuplot.c -o gnuplot
cristiancozzolino@cristiancozzolino-laptop:~$ ./gnuplot
cristiancozzolino@cristiancozzolino-laptop:~$
** (<unknown>:8312): WARNING **: Failed to send buffer
<unknown>: Fatal IO error 11 (Risorsa temporaneamente non disponibile) on X server :0.0.
Quindi presumo che l'errore non sta nel programma radice.c di cui ora mostro il codice completo:
Codice: Seleziona tutto
#include <stdio.h>
#include <math.h>
#define ERR 0.00001
main()
{
char *indice[]={"quadrata","cubica","quarta","quinta","sesta","settima","ottava","nona","decima"};
float a,b,m,x;
float fm,pot;
int n,i,res;
printf("\n// il programma calcola la radice\n// di un qualunque numero reale scelto dall'utente\n// con indice intero immesso da tastiera\n\n");
do {
printf("Inserire un indice valido per la radice(un numero intero da 1 a 10): ");
res=scanf("%d",&n);
while(getc(stdin)!='\n');
} while((n<1 || n>10) && (res==0));
do {
printf("Inserire un valore reale di cui calcolare la radice: ");
res=scanf("%f",&x);
while(getc(stdin)!='\n');
} while(res==0);
if (n%2==0 && x<0) printf("\nil valore inserito non è valido poichè non fa parte dell'insieme di definizione della radice\n");
else if (n==1) printf("\nla radice prima di %g è %g\n",x,x);
else if (x==1) printf("\nla radice %s di 1 è 1\n\n",indice[n-2]);
else {
if (x>1) {
a=1; b=x;
}
else if (x<-1) {
a=x; b=-1;
}
else {
a=-1; b=1;
}
do {
m=(a+b)/2;
pot=m;
for(i=1;i<n;i++) pot*=m;
fm=pot-x;
if (fm!=0) {
if (fm>0) b=m;
else a=m;
}
} while (fabs(fm)>ERR);
printf("\nla radice %s di %g è %g\n\n",indice[n-2],x,m);
}
char cmd[100];
float f = 1/(float)n;
sprintf(cmd,"echo "plot x**(%f)" | gnuplot -persist",f);
system(cmd);
}
Re: [c]utilizzare gnuplot
Inviato: mercoledì 21 gennaio 2009, 18:09
da Zoff
Infatti a me funziona

Re: [c]utilizzare gnuplot
Inviato: mercoledì 11 febbraio 2009, 18:13
da cristian_c
Ho scoperto che è un bug del pacchetto gnuplot:
https://bugs.launchpad.net/ubuntu/+source/gnuplot/+bug/239466, e quindi per risolvere basterebbe compilare il programma da sorgenti. Anche se non capisco come mai questo accade anche senza effetti visivi abilitati :-\
Re: [c]utilizzare gnuplot
Inviato: giovedì 12 febbraio 2009, 15:48
da cristian_c
Nella guida di gnuplot è scritto:
Il comando plot traccia automaticamente il grafico della funzione per x ∈ [−10; 10] e adattando
l’asse delle y ai valori cos` ottenuti. Molte volte abbiamo per` la necessit` di tracciare il grafico
ı o a
per valori di x diversi da quelli di default. Se x1,x2,y1,y2 sono numeri reali un primo modo
per ottenere il risultato voluto ` quello di utilizzare plot con la seguente sintassi:
e
plot[x1:x2][y1:y2]f(x) viene specificato sia dominio che codominio
plot[x1:x2]f(x) viene specificato solo il dominio
plot[][y1:y2]f(x) viene speciticato solo il codominio
come potrei adattare il grafico al valore di x che immetto da tastiera nel programma? ???
Re: [c]utilizzare gnuplot
Inviato: sabato 21 marzo 2009, 23:27
da cristian_c
Sono riuscito a centrare il grafico rispetto al valore di x in ascissa, inserendo un range 'delta'. (good)
Il codice è questo:
Codice: Seleziona tutto
#include <stdio.h>
#include <math.h>
#define ERR 0.00001
main()
{
char *indice[]={"quadrata","cubica","quarta","quinta","sesta","settima","ottava","nona","decima"};
float a,b,m,x;
float fm,pot;
int n,i,res;
printf("\n// il programma calcola la radice\n// di un qualunque numero reale scelto dall'utente\n// con indice intero immesso da tastiera\n\n");
do {
printf("Inserire un indice valido per la radice(un numero intero da 1 a 10): ");
res=scanf("%d",&n);
while(getc(stdin)!='\n');
} while((n<1 || n>10) && (res==0));
do {
printf("Inserire un valore reale di cui calcolare la radice: ");
res=scanf("%f",&x);
while(getc(stdin)!='\n');
} while(res==0);
if (n%2==0 && x<0) printf("\nil valore inserito non è valido poichè non fa parte dell'insieme di definizione della radice\n");
else if (n==1) printf("\nla radice prima di %g è %g\n",x,x);
else if (x==1) printf("\nla radice %s di 1 è 1\n\n",indice[n-2]);
else {
if (x>1) {
a=1; b=x;
}
else if (x<-1) {
a=x; b=-1;
}
else {
a=-1; b=1;
}
do {
m=(a+b)/2;
pot=m;
for(i=1;i<n;i++) pot*=m;
fm=pot-x;
if (fm!=0) {
if (fm>0) b=m;
else a=m;
}
} while (fabs(fm)>ERR);
printf("\nla radice %s di %g è %g\n\n",indice[n-2],x,m);
}
char cmd[100];
float f = 1/(float)n;
sprintf(cmd,"echo \"plot[(%f)-10:(%f)+10]x**(%f)\" | gnuplot -persist",x,x,f);
system(cmd);
}
Però si presenta quest'errore in certi casi quando inserisco un valore di x oppure non mi con indice della radice dispari, oppure non mi adatta l'asse delle y e quindi non riesco a vedere il grafico nella zona interessata:
Codice: Seleziona tutto
cristiancozzolino@ubuntu:~/programmazione$ ./radice
// il programma calcola la radice
// di un qualunque numero reale scelto dall'utente
// con indice intero immesso da tastiera
Inserire un indice valido per la radice(un numero intero da 1 a 10): 3
Inserire un valore reale di cui calcolare la radice: -45
la radice cubica di -45 è -3.55689
gnuplot> plot[(-45.000000)-10:(-45.000000)+10]x**(0.333333)
^
line 0: all points y value undefined!
cristiancozzolino@ubuntu:~/programmazione$
::)
Poi c'è un altro vecchio problema che non riesco a risolvere.
Se per esempio digito:
Codice: Seleziona tutto
cristiancozzolino@ubuntu:~/programmazione$ ./radice
// il programma calcola la radice
// di un qualunque numero reale scelto dall'utente
// con indice intero immesso da tastiera
Inserire un indice valido per la radice(un numero intero da 1 a 10): 5
Inserire un valore reale di cui calcolare la radice: 1000000
il programma si impalla e non mi restituisce il risultato. come posso risolvere? ::)
Re: [c]utilizzare gnuplot
Inviato: sabato 28 marzo 2009, 17:34
da cristian_c
per quanto riguarda l'errore:
mi hanno detto che sembra che manchi il parametro y.
Ma il parametro y non dovrebbe calcolarlo gnuplot data la formula inclusa nel comando e disegnando la funzione?
A questo punto non capisco ::)
Avete un'idea per la soluzione di questo problema?

Re: [c]utilizzare gnuplot
Inviato: sabato 4 aprile 2009, 22:05
da cristian_c
Poi c'è un altro vecchio problema che non riesco a risolvere.
Se per esempio digito:
Codice:
cristiancozzolino@ubuntu:~/programmazione$ ./radice
// il programma calcola la radice
// di un qualunque numero reale scelto dall'utente
// con indice intero immesso da tastiera
Inserire un indice valido per la radice(un numero intero da 1 a 10): 5
Inserire un valore reale di cui calcolare la radice: 1000000
il programma si impalla e non mi restituisce il risultato. come posso risolvere? Roll Eyes
Riguardo questo problema, mi hanno detto che il codice va beneissimo, ma allora non so perchè si blocca. :-\
Sul fatto di sostituire i float con dei double mi hanno detto che probabilmente il problema non è quello.
Tu cosa ne pensi, Zoff? ???
Re: [c]utilizzare gnuplot
Inviato: domenica 5 aprile 2009, 14:32
da cristian_c
Ho risolto apparentemente il problema di prima sostituendo i float con dei long double:
Codice: Seleziona tutto
#include <stdio.h>
#include <math.h>
#define ERR 0.00001
main()
{
char *indice[]={"quadrata","cubica","quarta","quinta","sesta","settima","ottava","nona","decima"};
long double a,b,m,x;
long double fm,pot;
int n,i,res;
printf("\n// il programma calcola la radice\n// di un qualunque numero reale scelto dall'utente\n// con indice intero immesso da tastiera\n\n");
do {
printf("Inserire un indice valido per la radice(un numero intero da 1 a 10): ");
res=scanf("%d",&n);
while(getc(stdin)!='\n');
} while((n<1 || n>10) && (res==0));
do {
printf("Inserire un valore reale di cui calcolare la radice: ");
res=scanf("%lf",&x);
while(getc(stdin)!='\n');
} while(res==0);
if (n%2==0 && x<0) printf("\nil valore inserito non è valido poichè non fa parte dell'insieme di definizione della radice\n");
else if (n==1) printf("\nla radice prima di %lg è %lg\n",x,x);
else if (x==1) printf("\nla radice %s di 1 è 1\n\n",indice[n-2]);
else {
if (x>1) {
a=1; b=x;
}
else if (x<-1) {
a=x; b=-1;
}
else {
a=-1; b=1;
}
do {
m=(a+b)/2;
pot=m;
for(i=1;i<n;i++) pot*=m;
fm=pot-x;
if (fm!=0) {
if (fm>0) b=m;
else a=m;
}
} while (fabs(fm)>ERR);
printf("\nla radice %s di %lg è %lg\n\n",indice[n-2],x,m);
}
char cmd[100];
float f = 1/(float)n;
sprintf(cmd,"echo \"plot[(%f)-10:(%f)+10]x**(%f)\" | gnuplot -persist",x,x,f);
system(cmd);
}
Il problema è che ottengo dei risultati strani:
Codice: Seleziona tutto
cristiancozzolino@ubuntu:~/programmazione$ ./radice
// il programma calcola la radice
// di un qualunque numero reale scelto dall'utente
// con indice intero immesso da tastiera
Inserire un indice valido per la radice(un numero intero da 1 a 10): 5
Inserire un valore reale di cui calcolare la radice: 1000000
la radice quinta di 1e+06 è 1.52486e-314
Warning: empty y range [1:1], adjusting to [0.99:1.01]
cristiancozzolino@ubuntu:~/programmazione$
sia nel risultato della radice che nel messaggio relativo a gnuplot. Allego anche uno screenshot.
Secondo voi quale può essere il motivo e come si può risolvere tutto? ??? ::) :-\
Re: [c]utilizzare gnuplot
Inviato: domenica 5 aprile 2009, 14:59
da cristian_c
Adesso sostituendo l con L il risultato è giusto:
Codice: Seleziona tutto
cristiancozzolino@ubuntu:~/programmazione$ ./radice
// il programma calcola la radice
// di un qualunque numero reale scelto dall'utente
// con indice intero immesso da tastiera
Inserire un indice valido per la radice(un numero intero da 1 a 10): 5
Inserire un valore reale di cui calcolare la radice: 1000000
la radice quinta di 1e+06 è 15.8489
Segmentation fault
cristiancozzolino@ubuntu:~/programmazione$
Ora il problema è che il grafico neanche appare più! Infatti si è verificato un 'segmentation fault'.
A cosa è dovuto e come si può risolvere? ::)
Re: [c]utilizzare gnuplot
Inviato: mercoledì 8 aprile 2009, 20:12
da cristian_c
Se eseguo lo stesso comando nel terminale ottengo:
Codice: Seleziona tutto
cristiancozzolino@ubuntu:~$ gnuplot
G N U P L O T
Version 4.2 patchlevel 2
last modified 31 Aug 2007
System: Linux 2.6.24-23-generic
Copyright (C) 1986 - 1993, 1998, 2004, 2007
Thomas Williams, Colin Kelley and many others
Type `help` to access the on-line reference manual.
The gnuplot FAQ is available from http://www.gnuplot.info/faq/
Send bug reports and suggestions to <http://sourceforge.net/projects/gnuplot>
Terminal type set to 'wxt'
gnuplot> plot[1000000-10:1000000+10]x**(1/5)
Warning: empty y range [1:1], adjusting to [0.99:1.01]
e stavolta il grafico appare, ma è una linea orizzontale
Perchè nel programma in c ottengo un segmentation fault e qui no?
E soprattutto cosa significa l'ultimo output e perchè ottengo una linea orizzontale?
Poi ho riprovato a lanciare di nuovo il programma in c:
Codice: Seleziona tutto
cristiancozzolino@ubuntu:~/programmazione$ ./radice
// il programma calcola la radice
// di un qualunque numero reale scelto dall'utente
// con indice intero immesso da tastiera
Inserire un indice valido per la radice(un numero intero da 1 a 10): 5
Inserire un valore reale di cui calcolare la radice: 1000000
la radice quinta di 1000000 è 15.8489
Warning: empty y range [1:1], adjusting to [0.99:1.01]
*** stack smashing detected ***: ./radice terminated
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)[0xb7f1d138]
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x0)[0xb7f1d0f0]
./radice[0x80489f1]
[0x32313239]
======= Memory map: ========
08048000-08049000 r-xp 00000000 fe:00 9166881 /home/cristiancozzolino/programmazione/radice
08049000-0804a000 rw-p 00000000 fe:00 9166881 /home/cristiancozzolino/programmazione/radice
0804a000-0806b000 rw-p 0804a000 00:00 0 [heap]
b7e2f000-b7e30000 rw-p b7e2f000 00:00 0
b7e30000-b7f79000 r-xp 00000000 fe:00 1196056 /lib/tls/i686/cmov/libc-2.7.so
b7f79000-b7f7a000 r--p 00149000 fe:00 1196056 /lib/tls/i686/cmov/libc-2.7.so
b7f7a000-b7f7c000 rw-p 0014a000 fe:00 1196056 /lib/tls/i686/cmov/libc-2.7.so
b7f7c000-b7f7f000 rw-p b7f7c000 00:00 0
b7f85000-b7f8f000 r-xp 00000000 fe:00 1197542 /lib/libgcc_s.so.1
b7f8f000-b7f90000 rw-p 0000a000 fe:00 1197542 /lib/libgcc_s.so.1
b7f90000-b7f94000 rw-p b7f90000 00:00 0
b7f94000-b7f95000 r-xp b7f94000 00:00 0 [vdso]
b7f95000-b7faf000 r-xp 00000000 fe:00 1197543 /lib/ld-2.7.so
b7faf000-b7fb1000 rw-p 00019000 fe:00 1197543 /lib/ld-2.7.so
bfb4f000-bfb64000 rw-p bffeb000 00:00 0 [stack]
Aborted
cristiancozzolino@ubuntu:~/programmazione$
stavolta appare la finestra di gnuplot ma è sempre una retta orizzontale di valore 1
Come mai? ::) ??? :-\
Re: [c]utilizzare gnuplot
Inviato: giovedì 9 aprile 2009, 16:45
da cristian_c
Ho provato a cercare in internet il significato dell'ultimo messaggio:
Codice: Seleziona tutto
// il programma calcola la radice
// di un qualunque numero reale scelto dall'utente
// con indice intero immesso da tastiera
Inserire un indice valido per la radice(un numero intero da 1 a 10): 5
Inserire un valore reale di cui calcolare la radice: -45
la radice quinta di -45 è -2.14113
Warning: empty y range [1:1], adjusting to [0.99:1.01]
e nelle FAQ di gnuplot è scritto:
7.3 Why does gnuplot ignore my very small numbers?
Gnuplot treats all numbers less than 1e-08 as zero, by default. Thus, if you are trying to plot a collection of very small numbers, they may be plotted as zero. Worse, if you're plotting on a log scale, they will be off scale. Or, if the whole set of numbers is "zero", your range may be considered empty:
gnuplot> plot 'test1'
Warning: empty y range [4.047e-19:3e-11], adjusting to [-1:1]
ma sia i numeri che riguardano x che y, non possono essere considerati zero!
che cosa significa tutto questo? ::)
Re: [c]utilizzare gnuplot
Inviato: lunedì 13 aprile 2009, 15:39
da cristian_c
Ciao Zoff,
a quel punto non sapevo proprio perchè avevo quegli strani errori e avevo pensato di utilizzare questo:
http://ndevilla.free.fr/gnuplot/gnuplot_i/index.html anchese se mi pareva un po' complicato da usare >:(
Però oggi ho pensato: e se faccio il casting a float della x (dichiarata e usata come long double) nel comando passato a gnuplot forse riesco a risolvere il problema:
Codice: Seleziona tutto
sprintf(cmd,"echo \"plot[(%f)-10:(%f)+10]x**(%f)\" | gnuplot -persist",(float)x,(float)x,f);
e infatti come volevasi dimostrare riesco a disegnare la funzione.
Il sorgente del programma:
Codice: Seleziona tutto
#include <stdio.h>
#include <math.h>
#define ERR 0.00001
main()
{
char *indice[]={"quadrata","cubica","quarta","quinta","sesta","settima","ottava","nona","decima"};
long double a,b,m,x;
long double fm,pot;
int n,i,res;
char x_str[50];
printf("\n// il programma calcola la radice\n// di un qualunque numero reale scelto dall'utente\n// con indice intero immesso da tastiera\n\n");
do {
printf("Inserire un indice valido per la radice(un numero intero da 1 a 10): ");
res=scanf("%d",&n);
while(getc(stdin)!='\n');
} while((n<1 || n>10) && (res==0));
do {
printf("Inserire un valore reale di cui calcolare la radice: ");
res=scanf("%s",&x_str);
while(getc(stdin)!='\n');
} while(res==0);
sscanf(x_str,"%Lf",&x);
if (n%2==0 && x<0) printf("\nil valore inserito non è valido poichè non fa parte dell'insieme di definizione della radice\n");
else if (n==1) printf("\nla radice prima di %Lf è %Lf\n",x_str,x_str);
else if (x==1) printf("\nla radice %s di 1 è 1\n\n",indice[n-2]);
else {
if (x>1) {
a=1; b=x;
}
else if (x<-1) {
a=x; b=-1;
}
else {
a=-1; b=1;
}
do {
m=(a+b)/2;
pot=m;
for(i=1;i<n;i++) pot*=m;
fm=pot-x;
if (fm!=0) {
if (fm>0) b=m;
else a=m;
}
} while (fabs(fm)>ERR);
printf("\nla radice %s di %s è %Lg\n\n",indice[n-2],x_str,m);
}
char cmd[100];
float f = 1/(float)n;
sprintf(cmd,"echo \"plot[(%f)-10:(%f)+10]x**(%f)\" | gnuplot -persist",(float)x,(float)x,f);
system(cmd);
}
Ora però rimane un unico problema. Non mi viene disegnata la parte negativa del grafico quando digito un numero negativo con radice a indice dispari (per l'indice pari ho già un messaggio che mi dice che non fa parte dell'insieme di definizione).
Codice: Seleziona tutto
cristiancozzolino@ubuntu:~/programmazione$ ./radice
// il programma calcola la radice
// di un qualunque numero reale scelto dall'utente
// con indice intero immesso da tastiera
Inserire un indice valido per la radice(un numero intero da 1 a 10): 3
Inserire un valore reale di cui calcolare la radice: -5
la radice cubica di -5 è -1.70998
cristiancozzolino@ubuntu:~/programmazione$
Allego uno screenshot:

Re: [c]utilizzare gnuplot
Inviato: venerdì 17 aprile 2009, 7:48
da Eccomiqui
cristian_c ha scritto:
nelle
faq di gnuplot si fa riferimento a questo:
5.2 Can I use gnuplot routines for my own programs?
On systems supporting pipes, you can pipe commands to gnuplot from other programs. Many applications with gnuplot as the graphics engine, like Octave (
http://www.octave.org), uses this method. This also works from a cgi script to drive gnuplot from a forms-based web page.
John Campbell (
jdc@nauvax.ucc.nau.edu) modified a much earlier version of gnuplot (3.5) to be a library of C subroutines callable from a C program. Gnuplot itself has changed radically since then, and we are not aware of any plans to create a similar library based on the current version.
come si fa ad attuare quello che è scritto qui sopra? ???
Ciao! Riprendo in mano questa interessantissima discussione per chiedere se qualcuno ha provato ad usare le librerie di cui si parla qui sopra (quelle sviluppate da John Campbell) per utilizzare gnuplot da C. Le soluzioni che ho visto nella discussione, infatti, mi pare che utilizzino solo le pipe.
O per lo meno se qualcuno sa dove si trovano le librerie con la documentazione.
Grazie
Re: [c]utilizzare gnuplot
Inviato: venerdì 17 aprile 2009, 13:30
da cristian_c
Eccomiqui ha scritto:
cristian_c ha scritto:
nelle
faq di gnuplot si fa riferimento a questo:
5.2 Can I use gnuplot routines for my own programs?
On systems supporting pipes, you can pipe commands to gnuplot from other programs. Many applications with gnuplot as the graphics engine, like Octave (
http://www.octave.org), uses this method. This also works from a cgi script to drive gnuplot from a forms-based web page.
John Campbell (
jdc@nauvax.ucc.nau.edu) modified a much earlier version of gnuplot (3.5) to be a library of C subroutines callable from a C program. Gnuplot itself has changed radically since then, and we are not aware of any plans to create a similar library based on the current version.
come si fa ad attuare quello che è scritto qui sopra? ???
Ciao! Riprendo in mano questa interessantissima discussione per chiedere se qualcuno ha provato ad usare le librerie di cui si parla qui sopra (quelle sviluppate da John Campbell) per utilizzare gnuplot da C. Le soluzioni che ho visto nella discussione, infatti, mi pare che utilizzino solo le pipe.
O per lo meno se qualcuno sa dove si trovano le librerie con la documentazione.
Grazie
è qui la documentazione:
http://ndevilla.free.fr/gnuplot/gnuplot_i/gnuplot__i_8c.html
Re: [c]utilizzare gnuplot
Inviato: sabato 18 aprile 2009, 19:10
da kiroken_
se usi un vero pipeline puoi usare dinamicamente la stessa istanza di gnuplot come se la stessi usando da shell dando il comando
ora però non ricordo qual'è la funzione per implementare un pipeline.
Re: [c]utilizzare gnuplot
Inviato: sabato 18 aprile 2009, 19:27
da cristian_c
kiroken ha scritto:
se usi un vero pipeline puoi usare dinamicamente la stessa istanza di gnuplot come se la stessi usando da shell dando il comando
ora però non ricordo qual'è la funzione per implementare un pipeline.
system o echo, a seconda di cosa intendi :-\
Re: [c]utilizzare gnuplot
Inviato: sabato 18 aprile 2009, 20:24
da kiroken_
intendo comunicare con gnuplot come se stessi scrivendo su di un file con le fwrite. In poche parole collegare ad esempio lo stdout del programma c con lo stdin di gnuplot così puoi interagire con gnuplot in modo interattivo (a quanto ho capito gnuplot prevede interattività). Con echo dai un comando e poi basta.