Clase Gnu Plot
Clase Gnu Plot
Clase Gnu Plot
C++
UNIVERSIDAD
NACIONAL DE
INGENIERIA
Facultad de Ciencias
Abraham Zamudio
GNUPLOT
Gnuplot es un poderoso programa
freeware para hacer graficas con
datos en 2D y en 3D. Gnuplot puede
usarse
en
muchos
ambientes
computacionales, incluyendo Linux,
IRIX, Solaris, Mac OS X, Windows y
DOS. Gnuplot requiere las mnimas
capacidades graficas y puede usarse
aun en una terminal de tipo vt100.
Tiene una amplia variedad de
opciones de salidas para que el
usuario pueda usar las graficas
resultantes como lo desee, ya sea
para ser visualizados o para incluirlos
en sus propios documentos
Graficas basicas en 2D
En sistemas UNIX, si el programa fue
correctamente instalado, simplemente debera
ejecutar: gnuplot
Esto hara que gnuplot inicie. Podra ver un
mensaje de iniciacion que entre otras cosas
menciona la version que se esta usando.
gnuplot>reset
gnuplot>set style data lines
gnuplot> plot ejem02.dat using 1:2
Tambien hay que notar que las columnas se especifican con $1,
o $2, o $3 y las potencias con ** . Note que los parentesis que
acotan la expresion son importantes.
Mucho mejor!,
el comando
replot repite el
ultimo comando
plot usado.
gnuplot> reset
gnuplot> set parametric
gnuplot> set dummy sts
gnuplot> set trange [1.0e-15:600]
gnuplot> eps(sts)=sts/E+(sts/Kp)**(1.0/np)
gnuplot> E = 206000.0
gnuplot> Kp = 1734.7
gnuplot> np = 0.2134
gnuplot> plot eps(sts), sts
Note que gnuplot distingue entre
letras mayusculas y minusculas: E
es diferente que e. Para las graficas
con parametros, el formato de los
comandos para graficar es plot
<x(t)>, <y(t)> donde t es la variable
independiente y x(t) y y(t) pueden
ser cualesquiera funciones de t. Las
constantes se pueden introducir
con formato decimal (600.456) o en
notacion cientfica (1.0e-15). Las
cadenas de caracteres no se
permiten (p.ej. a=tiempo).
Por default una cuadrcula sera dibujada a lo largo del eje mayor.
La opcion ytics junto con la opcion xtics le dicen a gnuplot que
dibuje lneas tanto horizontales como verticales en cada marca en
los ejes. Hay 3 parametros basicos para los ejes:
(1) set xrange [<x>:<y>], que permite especificar el rango visible
(2) set autoscale que obliga a gnuplot a usar el rango visible
(3) set logscale <x|y> que utiliza una escala logartmica..
A la grafica anterior le pondremos una escala logartmica sobre el
eje Y .
gnuplot> set logscale y
gnuplot> replot
# 5 Julio 1997
Donde el ndice
index 1:2 denota
el conjunto 1
hasta el 2, la
enumeracion de
los
conjuntos
empieza
desde
0.
Graficas en 3D
Gnuplot tambien puede hacer graficas en 3D con
una lista de datos o con funciones analticas
como en el caso de las graficas en 2D, las
graficas son como la que resulta al interactuar
con gnuplot con la siguiente lista de comandos.
gnuplot> set style data lines
gnuplot> set parametric
gnuplot> set view 60, 60, 1, 1
gnuplot> set xlabel x
gnuplot> set ylabel y
gnuplot> set zlabel z
gnuplot> splot u,u+v,sin(0.5*(u+v))
#include <stdio.h>
#include <stdlib.h>
#define GNUPLOT_PATH "/usr/local/bin/gnuplot"
int main (int argc, const char * argv[]) {
(1) FILE *gp;
(2) gp = popen(GNUPLOT_PATH, "w");
if(gp == NULL){
fprintf(stderr, "Error.No se puede encontrar %s.", GNUPLOT_PATH);
exit(EXIT_FAILURE);
}
(3) fprintf(gp, "set term aqua title \"Function A\" \n");
(4) fprintf(gp, "set samples 2048 \n");
(5) fprintf(gp, "plot [-512:512] -abs(x*sin(sqrt(abs(x))))+400");
(6) fflush(gp); /* No hay que olvidar vaciar el buffer
getchar();
(7) pclose(gp);
return(EXIT_SUCCESS);
}
#include <stdio.h>
#define GNUPLOT_PATH "/usr/bin/gnuplot -persist"
int main()
{
FILE* gp;
gp = popen(GNUPLOT_PATH, "w");
if (gp == NULL)
return -1;
fprintf(gp, "set isosample 100\n");
fprintf(gp, "min=-1\n");
fprintf(gp, "max=1\n");
fprintf(gp, "pi=3.141592\n");
fprintf(gp, "set hidden3d\n");
fprintf(gp, "set pm3d\n");
fprintf(gp, "set contour\n");
fprintf(gp, "splot [min:max] [min:max] x*x+2*y*y-0.3*cos(3*pi*x)-0.4*cos(4*pi*y)
+0.7\n");
fprintf(gp, "pause -1\n");
fflush(gp);
pclose(gp);
return 0;
}