Trabajando con GDChart

En estos días estaba tratando de crear unas gráficas provenientes de un archivo .csv para obtener los datos y a la final crear un archivo .png.

Existe una excelente herramienta para php que realiza maravillosas gráficas: pChart, sin embargo necesitaba una solución para trabajar con C/C++ y para ello estoy utilizando GDChart, la cual es una librería que nos permite realizar gráficas sencillas.

A continuación un ejemplo de como realizar una gráfica sencilla con lenguaje C/C++ en debian/ubuntu.

apt-get install libgdchart-gd2-xpm-dev libgdchart-gd2-xpm


Crear un archivo ejemplo.c


#include <stdio.h>
#include <gdc.h>
#include <gdchart.h>
#include <gdcpie.h>

main()
{
float a[3][10] = {{10,12,50,30,10,78,12,50,30,10},{12,50,30,10,78,12,50,30,10,45},{50,30,10,78,12,50,30,10,45,6}};

char *t[10] = { "1", "", "", "", "", "", "","","","F"};
unsigned long sc[2] = { 0xFF8080, 0x8080FF };

GDC_BGColor = 0xFFFFFFL; /* backgound color (white) */
GDC_LineColor = 0x000000L; /* line color (black) */
GDC_SetColor = &(sc[0]); /* assign set colors */

GDC_image_type = GDC_PNG;
/* ----- call the lib ----- */
GDC_out_graph( 800, 220, /* short width, height */
stdout, /* FILE* open FILE pointer */
GDC_LINE, /* GDC_CHART_T chart type */
10, /* int number of points per data set */
t, /* char*[] array of X labels */
3, /* int number of data sets */
(float*)a, NULL ); /* float[] data set 1 */

return 0;
}

Luego compilar y aqui viene la parte importante:

gcc ejemplo.c -o ejemplo -lgdc -D HAVE_LIBFREETYPE

Por ultimo ejecutar el archivo y colocarlo en un archivo .png

./ejemplo > salida.png



Esta librería la pienso utilizar momentáneamente, pero trataré de portar pChart a C++.

Nota, estoy trabajando ahora en la parte para leer el archivo csv...

Comentarios

  1. Buenos días, estoy tratando de compilar este ejemplo pero no me deja compilar ya que me salen los siguientes mensajes:

    g++ -o "pie" ./gdc_pie_samp.o -lgdc -lm
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_ticks' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_hard_grapheight' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_YTitle2Color' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_title_font' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_yaxisfont_size' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_xaxisfont_size' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_ytitle' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_xtitle_ptsize' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_HLC_style' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_xtitle_size' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_xlabel_ctl' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_ylabel_fmt' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_yaxis' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_XLabelColor' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_YTitleColor' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_XTitleColor' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDCPIE_label_font' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_0Shelf' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_SetColor' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_hard_xorig' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDCPIE_title_ptsize' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_annotation' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_HLC_cap_width' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_GridColor' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_stack_type' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_yaxis2' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_annotation_font_size' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_num_scatter_pts' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_xaxis_ptsize' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_ylabel2_fmt' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_requested_ymax' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_PlotColor' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_requested_ymin' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_3d_angle' sin definir
    /usr/lib/gcc/i686-linux-gnu/4.8/../../../../lib/libgdc.so: referencia a `GDC_grid' sin definir
    collect2: error: ld returned 1 exit status
    make: *** [pie] Error 1

    Cual es el error?

    ResponderEliminar
  2. Buenas noches, que significa la expresion -D HAVE_LIBFREETYPE? como la configuro en eclipse?

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Convertir vídeos con subtítulos para el decodificador TDA Novatech T207 en Debian

Ejemplo de Conexión de C/C++ con PostgreSQL

Traps con Nagios - Icinga