{"id":1822,"date":"2014-10-10T20:24:00","date_gmt":"2014-10-11T01:24:00","guid":{"rendered":"http:\/\/linuxitos.com\/main\/graficar-puntos-en-gnuplot-desde-c\/"},"modified":"2014-10-10T20:24:00","modified_gmt":"2014-10-11T01:24:00","slug":"graficar-puntos-en-gnuplot-desde-c","status":"publish","type":"post","link":"https:\/\/linuxitos.com\/main\/graficar-puntos-en-gnuplot-desde-c\/","title":{"rendered":"Graficar puntos en Gnuplot desde C"},"content":{"rendered":"<p><\/p>\n<div style=\"text-align: justify;\"><span style=\"font-family: Verdana, sans-serif;\">En ocasiones es necesario realizar gr\u00e1ficas de alguna funci\u00f3n o simplemente la graficaci\u00f3n de puntos. \u00c9sta tarea es simple de realizar desde gnuplot, suponiendo que se use alguna distro de linux. En algunos casos es necesario usar alg\u00fan programa o software intermedio para realizar dicha gr\u00e1fica, tal podr\u00eda ser el caso de realizar un programa en c, y desde ah\u00ed generar los puntos y autom\u00e1ticamente graficarlos.<\/span><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-family: Verdana, sans-serif;\">Cuando es la primera vez que se hace esto es un poco complicado. Aqu\u00ed les traigo un ejemplo para ir comenzando con esto:<\/span> <\/p>\n<pre><br \/>\/*http:\/\/umencs.blogspot.mx\/2013\/05\/plotting-creating-graphs-in-c-c.html File Name: GraphPlotting.c*\/<br \/>\/*<br \/> * Autor: gXfer<br \/> * Nombre del archivo: graficarGnuplotDesdeC.c<br \/> * Descripci\u00f3n: Grafica en gnuplot los puntos ordeandos e inicializados <br \/> * en los arreglos (valoresX, valoresY)<br \/> * 10-octubre-2014*\/<br \/><br \/>#include &lt;stdlib.h&gt;<br \/>#include &lt;stdio.h&gt;<br \/>#include &lt;unistd.h&gt;<br \/>#define NUM_PUNTOS 11<br \/>#define NUM_COMANDOS 4<br \/><br \/>int main(){<br \/>    \/\/ X, Y valores de los puntos a graficar<br \/>    double valoresX[NUM_PUNTOS] = {0.0, 1.0, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0};<br \/>    double valoresY[NUM_PUNTOS] = {4.0, 4.0, 0.0, 1.0, 0.0, 1.5, 0.0, 1.0, 0.0, 0.5, 0.0};<br \/>    register int i=0;<br \/>    \/* se crea y se abre el archivo puntosGraficar.txt en modo escritura <br \/>     * para almacenar los valores de x y y que est\u00e1n declarados en los arreglos<br \/>     * valoresX y valoresY*\/<br \/>    FILE * archivoPuntos = fopen(\"puntosGraficar.txt\", \"w\");<br \/><br \/>    \/*Guardar los puntos x,y en el archivo de texto creado y abierto previamente*\/<br \/>    for (i=0;i&lt;NUM_PUNTOS;i+ +){<br \/>  fprintf(archivoPuntos, \"%lf %lf n\", valoresX[i], valoresY[i]);<br \/> }<br \/> <br \/>    \/*lista de comandos para ejecutar y configurar la visualizaci\u00f3n que tendr\u00e1n<br \/>     * los puntos en la gr\u00e1fica con gnuplot*\/<br \/>    char * configGnuplot[] = {\"set title \"gXfer Graficando puntos - unir con l\u00edneas\"\", <br \/>                                \"set ylabel \"----grado de membres\u00eda---&gt;\"\",<br \/>                                \"set xlabel \"----Universo X---&gt;\"\",<br \/>                                \"plot \"puntosGraficar.txt\" using 1:2 with lines\"<br \/>                               };<br \/><br \/>    \/*Se crea una archivo de tipo poen, es una teber\u00eda IPC que se usa, para<br \/>     * ejecutar gnuplot y enviarle el archivo a graficar*\/<br \/>    FILE * ventanaGnuplot = popen (\"gnuplot -persist\", \"w\");<br \/>    \/\/ Executing gnuplot commands one by one<br \/>    for (i=0;i&lt;NUM_COMANDOS;i+ +){<br \/>  fprintf(ventanaGnuplot, \"%s n\", configGnuplot[i]);<br \/> }<br \/> fclose(archivoPuntos);<br \/>    return 0;<br \/>}<br \/><\/pre>\n<p><\/div>\n<div style=\"text-align: justify;\">\n<div style=\"background-color: white; margin-bottom: 0.5em; margin-top: 0.5em; text-align: start;\">\n<div style=\"color: #252525; line-height: 22.3999996185303px; text-align: justify;\"><span style=\"font-family: Verdana, sans-serif;\">Si usas geany para compilar y ejecutar tus c\u00f3digos en C, es necesario hacer las siguientes configuraciones:&nbsp;<\/span><\/div>\n<div style=\"color: #252525; line-height: 22.3999996185303px; text-align: justify;\"><span style=\"font-family: Verdana, sans-serif; line-height: 22.3999996185303px;\">Ir a la opci\u00f3n construir y seleccionar de la lista desplegable la opci\u00f3n que dice \u00abEstablecer comandos de construcci\u00f3n\u00bb como se muestra en la siguiente imagen.<\/span><\/div>\n<div style=\"clear: both; color: #252525; line-height: 22.3999996185303px; text-align: center;\"><a href=\"http:\/\/3.bp.blogspot.com\/-hwYIfC73slM\/VDslTZkhwqI\/AAAAAAAAATU\/5Mgkm42cT20\/s1600\/Captura%2Bde%2Bpantalla%2Bde%2B2014-10-12%2B20%3A03%3A37.png\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" src=\"http:\/\/3.bp.blogspot.com\/-hwYIfC73slM\/VDslTZkhwqI\/AAAAAAAAATU\/5Mgkm42cT20\/s1600\/Captura%2Bde%2Bpantalla%2Bde%2B2014-10-12%2B20%3A03%3A37.png\" height=\"213\" width=\"400\" \/><\/a><\/div>\n<div style=\"clear: both; color: #252525; line-height: 22.3999996185303px; text-align: center;\"><\/div>\n<div style=\"clear: both; color: #252525; line-height: 22.3999996185303px; text-align: justify;\"><span style=\"font-family: Verdana, sans-serif;\">Abrir\u00e1 una ventana como se muestra en la imagen de abajo, en la opci\u00f3n que dice \u00abCompilar\u00bb deben agregar la sintaxis \u00ab-lm\u00bb sin comillas, lo mismo deben de hacer en la l\u00ednea de que dice \u00abConstruir\u00bb, agregar \u00ab-lm\u00bb sin comillas. y listo, le dan en aceptar y pueden compilar como normalmente lo hace.<\/span><\/div>\n<div style=\"color: #252525; line-height: 22.3999996185303px;\"><\/div>\n<div style=\"clear: both; color: #252525; line-height: 22.3999996185303px; text-align: center;\"><a href=\"http:\/\/2.bp.blogspot.com\/-OCO6yeMrIDA\/VDslT46qFhI\/AAAAAAAAATc\/JIqusNZNiAM\/s1600\/Captura%2Bde%2Bpantalla%2Bde%2B2014-10-12%2B20%3A04%3A39.png\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" src=\"http:\/\/2.bp.blogspot.com\/-OCO6yeMrIDA\/VDslT46qFhI\/AAAAAAAAATc\/JIqusNZNiAM\/s1600\/Captura%2Bde%2Bpantalla%2Bde%2B2014-10-12%2B20%3A04%3A39.png\" height=\"307\" width=\"400\" \/><\/a><\/div>\n<div style=\"color: #252525; line-height: 22.3999996185303px;\"><span style=\"font-family: Verdana, sans-serif;\"><br \/><\/span><span style=\"font-family: Verdana, sans-serif;\">Para compilar: ir al directorio que ha sido guardado previamente:<\/span><\/div>\n<pre style=\"background-attachment: scroll; background-clip: initial; background-color: #2d2d2d; background-image: url(http:\/\/blog.desdelinux.net\/wp-content\/themes\/DesdeLinuxV5\/img\/terminal.png); background-origin: initial; background-position: 50% 0%; background-repeat: no-repeat; background-size: initial; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(0, 0, 0); box-sizing: border-box; color: #828fff; font-family: 'Roboto Mono', Consolas, monaco, monospace; font-size: 14px; line-height: 1.428571429; margin: 8px 15px; padding: 30px 9.5px 10px; text-shadow: none; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;\">gcc -Wall graficarGnuplotDesdeC.c -lm -o graficarGnuplotDesdeC<\/pre>\n<div style=\"color: #252525; line-height: 22.3999996185303px;\"><span style=\"font-family: Verdana, sans-serif;\">Para ejecutar el resultado introduce en la l\u00ednea de comandos:<\/span><\/div>\n<pre style=\"background-attachment: scroll; background-clip: initial; background-color: #2d2d2d; background-image: url(http:\/\/blog.desdelinux.net\/wp-content\/themes\/DesdeLinuxV5\/img\/terminal.png); background-origin: initial; background-position: 50% 0%; background-repeat: no-repeat; background-size: initial; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(0, 0, 0); box-sizing: border-box; color: #828fff; font-family: 'Roboto Mono', Consolas, monaco, monospace; font-size: 14px; line-height: 1.428571429; margin: 8px 15px; padding: 30px 9.5px 10px; text-shadow: none; white-space: pre-wrap; word-break: break-all; word-wrap: break-word;\">.\/graficarGnuplotDesdeC.c<\/pre>\n<\/div>\n<p><span style=\"font-family: Verdana, sans-serif;\">La salida es la siguiente:<\/span><br \/><span style=\"font-family: Verdana, sans-serif;\"><br \/><\/span><\/p>\n<div style=\"clear: both; text-align: center;\"><a href=\"http:\/\/3.bp.blogspot.com\/-jNJ6Vsci5pI\/VDiGPlpHH7I\/AAAAAAAAARs\/Bu4CrwXWx58\/s1600\/Captura%2Bde%2Bpantalla%2Bde%2B2014-10-10%2B20%3A20%3A04.png\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" border=\"0\" src=\"http:\/\/3.bp.blogspot.com\/-jNJ6Vsci5pI\/VDiGPlpHH7I\/AAAAAAAAARs\/Bu4CrwXWx58\/s1600\/Captura%2Bde%2Bpantalla%2Bde%2B2014-10-10%2B20%3A20%3A04.png\" height=\"355\" title=\"\" width=\"640\" \/><\/a><\/div>\n<p><\/div>\n<div style=\"text-align: justify;\"><span style=\"font-family: Verdana, sans-serif;\">Si tienen dudas no olviden comentar.<\/span><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>En ocasiones es necesario realizar gr\u00e1ficas de alguna funci\u00f3n o simplemente la graficaci\u00f3n de puntos. \u00c9sta tarea es simple de realizar desde gnuplot, suponiendo que se use alguna distro de linux. En algunos casos es necesario usar alg\u00fan programa o software intermedio para realizar dicha gr\u00e1fica, tal podr\u00eda ser el caso de realizar un programa [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[76,1454,87,1444,1453,1447,4],"tags":[],"class_list":["post-1822","post","type-post","status-publish","format-standard","hentry","category-c","category-funciones","category-gnome","category-gnuplot","category-graficar","category-graficar-funciones","category-linux"],"_links":{"self":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/1822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/comments?post=1822"}],"version-history":[{"count":0,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/1822\/revisions"}],"wp:attachment":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/media?parent=1822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/categories?post=1822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/tags?post=1822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}