from - C++ y gnuplot
gnuplot plot from file (7)
A veces es tan fácil como uno puede pensar
gnuplot file
donde el archivo no es ni su información ni su archivo de resultados, sino un archivo con el comando que escribiría en la línea de comandos. Simplemente ingrese allí los comandos que necesita (ya sea archivo constante que tiene o generarlo). Después de ejecutar todos los comandos en ese archivo, gnuplot sale.
Esta es mi primera publicación y soy bastante novato en C ++ y compilando en general.
Estoy compilando un programa que requiere que se dibujen algunos gráficos. El programa crea un archivo .dat y luego debería abrir gnuplot y escribir el diagrama '' .dat''. Esta bien.
¿Hay alguna manera de hacer que gnuplot se abra automáticamente y mostrarme la trama que necesito? Debería usar alguna función de sistema () en el código para llamar a gnuplot, pero ¿cómo puedo hacerle trazar lo que necesito?
Perdón por mi inglés no perfecto: s
Gracias por la atención de todos modos!
Dependiendo de su sistema operativo, es posible que pueda usar popen (). Esto te permitiría generar un proceso de gnuplot y simplemente escribir en él como cualquier otro ARCHIVO *.
Si tiene puntos de datos para trazar, puede pasarlos en línea con la opción de trazado "-" ... Del mismo modo, es posible que desee explorar opciones de puntos / líneas / puntos de referencia / etc de estilo de datos .
Sin pausa ni persistencia, gnuplot terminará al finalizar la transmisión de entrada. En su caso de ejemplo, eso sería cuando se llega al final del archivo.
Para producir (escribir) un archivo de salida (gráfico), use:
set terminal png small
set output "filename.png"
Hay muchas opciones para configurar la terminal . Png suele estar allí. Si no, tal vez gif, tiff o jpeg?
¡Cuidado con sobrescribir el archivo!
Es posible que desee utilizar el tamaño del conjunto 2,2 para hacer un gráfico más grande. Algunas variantes de terminal configuradas también le permiten especificar el tamaño.
Puede necesitar usar el indicador ''-persist'' para el comando. Sé que en los sistemas * nix, este indicador es obligatorio si desea que la ventana de trazado permanezca después de que el proceso gnuplot se haya completado y salido.
gnuplot -persist commands.gp
Además, puede poner tantos comandos gnuplot como desee en el archivo. El archivo actúa como una secuencia de comandos por lotes en este sentido.
Sí tu puedes. Puede crear un archivo que tenga los comandos que escribiría de otra manera para configurar el trazado y abrir gnuplot que se ejecuta desde ese archivo. Este enlace tiene un artículo que explica cómo hacerlo. También puede hacer una salida a un EPS u otros formatos de salida gráfica y mostrar la gráfica usando otro widget que se lee en el archivo.
Estoy aprendiendo esto hoy también. Aquí hay un pequeño ejemplo que cociné.
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char **argv) {
ofstream file("data.dat");
file << "#x y" << endl;
for(int i=0; i<10; i++){
file << i << '' '' << i*i << endl;
}
file.close();
return 0;
}
Guarde eso como plot.cpp y compile eso con g ++:
g++ plot.cpp -o plot
Ejecute el programa para crear el archivo .dat:
./plot
Guarde el siguiente script gnuplot como plot.plt:
set terminal svg enhanced size 1000 1000 fname "Times" fsize 36
set output "plot.svg"
set title "A simple plot of x^2 vs. x"
set xlabel "x"
set ylabel "y"
plot "./data.dat" using 1:2 title ""
Ejecute el script con gnuplot para generar su archivo .svg:
gnuplot plot.plt
La trama resultante estará en plot.svg. Si omite las primeras dos líneas que especifican el resultado, aparecerá en una ventana. ¡Que te diviertas!
Es posible que necesite establecer un tipo de terminal. Lea la documentación de gnuplot sobre eso.
Es posible que necesites agregar una línea
pause -1
Esto mostrará el trazado hasta que se haya presionado la tecla de retorno.
Lo que probablemente esté viendo es que gnuplot corre y sale antes de que la trama tenga tiempo para mostrarse.