Foros del Web » Programación para mayores de 30 ;) » C/C++ »

GNUPLot con C++

Estas en el tema de GNUPLot con C++ en el foro de C/C++ en Foros del Web. Hola a todos: Tal vez muchos sepan de la existencia del GNUPlot (programa para hacer graficos 2d y 3d). Yo recien lo descubro por medio ...
  #1 (permalink)  
Antiguo 17/09/2006, 17:19
Avatar de Warlord_Furia  
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 18 años, 11 meses
Puntos: 0
GNUPLot con C++

Hola a todos:

Tal vez muchos sepan de la existencia del GNUPlot (programa para hacer graficos 2d y 3d). Yo recien lo descubro por medio de un amigo.

Al Grano!!!!!
Se que puedo combinar las funciones de este programa (GNUPlot) desde muchos editores de codigo fuente en mi caso "Borland c++ 5.02".
La pregunta es ¿Como? ¿Como puedo desde la linea de codigo de c++ llamar a las funciones del (GNUPLot)? , si alguien tiene la respuesta por fabor posteela.

Nota
Trabajo con "Borland c++ 5.02" , Tengo el "GNUPlot 4.0". ¿Que Sigue :P?
He visto muchos Programas Graficadores hechos en C++ que hicieron uso de las Funciones del GNUPLot pero lamentablemente no pude acceder al codigo es por ello que recurro a este foro en busca de ayuda.

Desde ya!!! Agradesco todos los Aportes.
  #2 (permalink)  
Antiguo 17/09/2006, 23:24
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años
Puntos: 2
No conosco tal programa, pero suena mas como una libreria.

las forma en que puedes usarla seria a traves de una libreria estatica o una DLL.


ademas es necesario tener los ficheros de cabecera de este programa o libreria.

verifica que es lo que trae con sigo este programa.

Saludos.
  #3 (permalink)  
Antiguo 18/09/2006, 10:53
Avatar de Warlord_Furia  
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 18 años, 11 meses
Puntos: 0
Cita:
Iniciado por Nivel7 Ver Mensaje
No conosco tal programa, pero suena mas como una libreria.
las forma en que puedes usarla seria a traves de una libreria estatica o una DLL.
ademas es necesario tener los ficheros de cabecera de este programa o libreria.
verifica que es lo que trae con sigo este programa.
Saludos.
Pues este aporte no me ayudo en nada.
He buscado información en la red y hay muchos que como yo Buscan la Manera de Invocar el GNUPlot con el C++.

Lo unico que pude encontrar fue un comentario en el cual se explica la manera de invocar este programa desde la linea de codigo de c++, pero a decir verdad no entendi absolutamente nada. ya que, se trataba de un caso particular.

Aqui el Comentario (Ingles).

este es el caso del cual no entendi nada solo se que son indicaciones para que el programa termine cuando el gnuplot termine el dibujo.

-------------------------------------------------------------------------
Joseph Suprenant wrote:
> Hello all,
> I have a C++ program, it does some calculations on things and then
> prints out a file in the format in which GNUPLOT can use. So my question is
> how would i call GNUPLOT from my C++ program. I know in some operating
> systems you can do system("gnuplot");

system is useless since then you can't pass any commands to GNUplot

> But not with red hat 7.3. So could
> some kind soul help me out? After it starts up GNUPLOT my program will
> terminate.


I've done this on Linux using the popen() function (which is not
standard C++, but POSIX-standard)

class GNUplot {
public:
GNUplot() throw(string);
~GNUplot();
void operator ()(const string& command);
// send any command to gnuplot
protected:
FILE *gnuplotpipe;
};

GNUplot::GNUplot() throw(string) {
gnuplotpipe=popen("gnuplot","w");
if (!gnuplotpipe) {
throw("Gnuplot not found !");
}
}

GNUplot::~GNUplot() {
fprintf(gnuplotpipe,"exit\n");
pclose(gnuplotpipe);
}

void GNUplot:perator() (const string& command) {
fprintf(gnuplotpipe,"%s\n",command.c_str());
fflush(gnuplotpipe);
// flush is necessary, nothing gets plotted else
};


You simply construct one object and invoke it with operator () like

GNUplot plotter;
plotter("plot sin(x)");

Note that GNUplot will be killed as soon as your program terminates. So
you need to wait for keystroke or similar, otherwise you will only see
short flashing of the graph. If you need that the graph window stays on
screen after your pragram fnished, then instead of "gnuplot" in the
constructor invoke "gnuplot -persist".

-------------------------------------------------------------------------
Si alguien tiene información acerca de lo que busco.

¿¿Como invocar al GNUPLot desde la Linea de Codigo de C++ y como hacer uso de este??

Agradesco desde ya!!
  #4 (permalink)  
Antiguo 18/09/2006, 13:46
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Pues yo lo veo bien claro, y el comentario en inglés lo explica perfectamente.

Usa popen() y demás para abrir una tubería que te comunique con la entrada estándar de GNU Plot.

Y si necesitas más ayuda que la que te da el comentario (que te viene hasta el código hecho), busca en Google que he encontrado más 3 referencias de cómo hacerlo en la primera página...
  #5 (permalink)  
Antiguo 18/09/2006, 18:11
Avatar de Warlord_Furia  
Fecha de Ingreso: mayo-2005
Mensajes: 31
Antigüedad: 18 años, 11 meses
Puntos: 0
Cita:
Iniciado por MaxExtreme Ver Mensaje
Pues yo lo veo bien claro, y el comentario en inglés lo explica perfectamente.
Usa popen() y demás para abrir una tubería que te comunique con la entrada estándar de GNU Plot.
Y si necesitas más ayuda que la que te da el comentario (que te viene hasta el código hecho), busca en Google que he encontrado más 3 referencias de cómo hacerlo en la primera página...
Claro .. se que me dice como hacerlo pero desde LINUX

Yo quisiera Saber como invocarlo desde Windows.

Si tienes los Links por fabor hazmelos llegar.
  #6 (permalink)  
Antiguo 21/09/2006, 16:44
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por Warlord_Furia Ver Mensaje
Claro .. se que me dice como hacerlo pero desde LINUX

Yo quisiera Saber como invocarlo desde Windows.

Si tienes los Links por fabor hazmelos llegar.
Dice como hacerlo, punto. Infórmate de la función popen(), y sabrás que es y para qué sirve.

Puedes usarlo desde Windows usando algun port de esa función, o en otro caso, buscando la equivalencia en la API de Windows (que existe).

Los Links, están en la primera página de Google, y no, no pienso copiártelos.
  #7 (permalink)  
Antiguo 06/05/2010, 19:13
 
Fecha de Ingreso: mayo-2010
Mensajes: 2
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: GNUPLot con C++

¡Que lata es poder hacer un comentario en este foro!, deberían reestructurar la forma en que te registras.

Pero bueno, con respecto al tema:
http://pegasus.udea.edu.co/~jzuluaga/Documentos/Documento_19.doc

Es un archivo *.doc en el que te explican detalladamente como hacer lo que quieres, Todo se reduce a invocar el programa gnuplot desde la terminal (es igual en Linux y en Windows).
En C solo tienes que escribir:
system("gnuplot archivo");

Esto ejecuta el programa con el archivo que le pongas pero desde tu código en C.

Suerte.
  #8 (permalink)  
Antiguo 08/05/2010, 00:37
 
Fecha de Ingreso: mayo-2010
Mensajes: 2
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: GNUPLot con C++

mmmmm, parece que iniciar sesión no es tanta lata como registrarse...

El archivo anterior explica como comunicarse con GNUPlot por medio de un archivop script, pero existe otra forma que es por tuberías en ANSI C:

http://computacion.cs.cinvestav.mx/~acaceres/courses/gnuplotCurso/node11.html

Me parece la mejor y aunque seguramente al amigo Warlord_Furia ya no le sirva, quizá a otros si.
  #9 (permalink)  
Antiguo 08/05/2010, 03:12
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: GNUPLot con C++

Hola Ligator

Te recuerdo el aviso que había al final de este tema y que parece que no has leído o no le has hecho ni caso.



Tema cerrado.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 09:21.