JpGraph es una librería que nos permite generar gráficos mediante PHP, de una forma realmente sencilla y bajo nuestro total control. Sus principales características son:
- Detecta automáticamente que versión del GD.
- Permite insertar texto a los gráficos y soporte para tipos de letra.
- Niveles de transparencia.
- Posibilidad de generar complejos gráficos de Gantt.
- Manejo de las escalas para los ejes del gráfico.
- Soporta varios formatos de imágenes: PNG, GIF y JPG.
- Permite generar gráficas de barras horizontales.
- Soporte para gráficas de tipo científico.
- Soporte para generación de escala automática, dependiendo de los datos.
- Soporta para distintos tipos de relleno para las gráficas.
- Una excelente documentación.
Vamos a ver un par de ejemplos.
Generación de un gráfico de lineas
Lo primero que vamos a ver es como generar un gráfico de lineas:
<?php // Evita que se vean los errores error_reporting(0); include("include/jpgraph.php"); include("include/jpgraph_line.php"); //Array con los datos del gráfico $datos = array(9, 5, 12, 11, 6, 10, 9, 11, 10, 4, 7, 3); // Clase que genera el gráfico de tamaño 400x300 $grafico = new Graph(400, 300, "auto"); $grafico->SetScale("textlin"); // Creamos un juego de datos, del tipo linea $lineplot = new LinePlot($datos); $lineplot->SetColor("red"); // Añadimos el juego de datos $grafico->Add($lineplot); // Generamos el gráfico $grafico->Stroke(); ?>
Este gráfico quedaría de la siguiente forma:
Podemos tener también varios juegos de datos:
<?php // Evita que se vean los errores error_reporting(0); include("include/jpgraph.php"); include("include/jpgraph_line.php"); $datos1 = array(9, 5, 12, 11, 6, 10, 9, 11, 10, 4, 7, 3); $datos2 = array(5, 7, 1, 11, 13, 4, 9, 6, 12, 7, 1, 4); $grafico = new Graph(400, 300, "auto"); $grafico->SetScale("textlin"); $lineplot1 = new LinePlot($datos1); $lineplot1->SetColor("red"); $lineplot2 = new LinePlot($datos2); $lineplot2->SetColor("green"); $grafico->Add($lineplot1); $grafico->Add($lineplot2); $grafico->Stroke(); ?> <
Este gráfico quedaría de la siguiente manera:
Podemos además añadir texto al gráfico:
<?php // Evita que se vean los errores error_reporting(0); include("include/jpgraph.php"); include("include/jpgraph_line.php"); $datos1 = array(9, 5, 12, 11, 6, 10, 9, 11, 10, 4, 7, 3); $datos2 = array(5, 7, 1, 11, 13, 4, 9, 6, 12, 7, 1, 4); $grafico = new Graph(400, 300, "auto"); $grafico->SetScale("textlin"); // Titulo del gráfico $grafico->title->Set("Ejemplo JpGraph"); // Etiqueta para el eje X $grafico->xaxis->title->Set("Eje X"); // Etiqueta para el eje Y $grafico->yaxis->title->Set("Eje Y"); $lineplot1 = new LinePlot($datos1); $lineplot1->SetColor("red"); $lineplot2 = new LinePlot($datos2); $lineplot2->SetColor("green"); $grafico->Add($lineplot1); $grafico->Add($lineplot2); $grafico->Stroke(); ?>
Esta vez el gráfico nos quedaría de la siguiente forma:
Como se puede ver es bastante sencillo e intuitivo. Pero con esto basta por hoy, en próximos días veremos otros tipos de gráficos y como personalizar estos mucho más.
Y para finalizar los archivos con los ejemplos (no incluye JpGraph, que hay que meterlo en una carpeta llamada include):
Ejemplos con JpGraph. Parte I.
ACTUALIZACIÓN 2012-12-05
Se ha añadido al código una linea de código que desactiva el reporte de errores de PHP. Esto se debe a que la versión de jpGraph para PHP 4 produce errores en versiones de PHP 5, que provocan que las imágenes generadas no se vean bien.
Todos los ejemplos de este artículo y de los demás artículos sobre jpGraph los podéis encontrar en gitHub, en el siguiente repositorio:
https://github.com/mjcarrascosa/jpGraphDemo
Artículos relacionados:
Artículos relacionados:
Tags: Generar gráficos, JpGraph, PHP
Hola, los ejemplos no se ven.
Ya se ven, era un problema con la notificación de errores de PHP. Hasta hace un rato no he podido mirarlo.
Hola, necesito ayuda, logro graficar de forma dinámica sin problemas, pero quiero poder inicializar el eje de las x en 1, pues me sale inicializado en cero, por fa ayúdenme, todos los ejemplos que me topo en internet empiezan en 1 pero nadie dice como.
Como puedo agregar etiquetas en esos graficos?? podrias ayudarme pls