Cómo crear un graficador en PHP

Ahora explicaré como generar un pequeño graficador de funciones en PHP. Supondremos que el lector tiene un manejo mínimo de PHP y sabe crear base de datos en el motor MySQL.


El graficador lo haremos de la siguiente manera: guardaremos los puntos de la función a graficar en la base de datos, y luego el programa se encargará de buscar esos puntos y los plasmará en un gráfico en pantalla uniendo con una línea todos los puntos correspondientes, para ello utilizaremos una librería llamada libchart (para qué volver a inventar la rueda, no?) que la puedes bajar desde aquí.
Para comenzar crearemos una base de datos, en este caso en MySQL con el nombre “graficos”.
La base de datos contendrá 2 tablas con los siguientes campos:

Tabla 1: puntos

pu_id : índice único de cada registro.
pu_idNombre: aquí guardaremos un valor que representa a que grafico corresponde el registro.
pu_x: valor del eje x.
pu_y: valor del eje y.

Ejemplo con valores agregados:

graficos_php1

Tabla 2: nombre
 nom_id: guardo el identificador del nombre, valor que se guarda en la tabla puntos en el campo pu_idNombre;
nom_desc: el nombre del grafico propiamente dicho.
nom_descX: descripción del valor X.
nom_descY: descripción del valor Y.

Ejemplo con valores:

graficos_php2

Bien, generamos la base de datos y además podemos crear algunas funciones (queda a crieterio de cada uno que funciones crear) que se encarguen de guardar los putos de la funciones en la base de datos.
Ahora mostraré una función que guarda los puntos de un grafico en la base de datos.
<?php

//Esta función recibe como argumentos $grafico = id de nombre para identificar al grafico, $x = valor de x e $y = valor de y.
function guardar_puntos ($grafico,$x,$y)
{
$sql = "INSERT INTO puntos VALUES (''$grafico,$x,$y)";
if (mysql_query($sql))
return true;
else
return false;
}

?>
Ahora haré el archivo index.php. Para indicar que gráfico quiero mostrar, le paso el id del nombre del gráfico (Seleccionado del campo pu_idNombre de la tabla puntos) mediante variables GET (Ej: index.php?id=1) de esta forma selecciono todos los puntos que pertenezcan al grafico 1.

index.php:

<?php 

include(".\include\common.php"); //Consulta a la base de datos para obtener los puntos de los graficos
$sql = "SELECT * FROM puntos
WHERE pu_idNombre='".$_GET['id']."'
ORDER BY pu_x ";
$res = mysql_query($sql);
//Utilizo la libreria e instancio un grafico tipo línea para crear el grafico
$chart = new LineChart();
//Instancio una nueva serie de puntos
$serie1 = new XYDataSet();
//Obtengo cada punto y lo agrego en el DataSet
while ($data = mysql_fetch_assoc($res))
{
$serie1->addPoint(new Point($data['pu_x'],$data['pu_y']));
}
//Agregar la descripción de cada línea
$sql2 = "SELECT * FROM nombre WHERE nom_id='".$_GET['id']."'";
$res2= mysql_query($sql2);
$data2 = mysql_fetch_assoc($res2);
$dataSet = new XYSeriesDataSet();
$dataSet->addSerie($data2['nom_descX'], $serie1);
$chart->setDataSet($dataSet);

$chart->setTitle($data2['nom_nombre']);
$chart->getPlot()->setGraphCaptionRatio(0.65);
//La ultima linea me genera un imagen PNG con el grafico.
$chart->render("generated/agrfico.png");
//Fin de la generacion del grafico en php, en las líneas seguientes muestro la imagen generada.
?>< html>< body>< img alt="Line chart" src="generated/grafico.png" mce_src="generated/grafico.png" style="border: 1px solid gray;"/> < /body>< /html>
?>

En el archivo index.php lo que hago es mostrar la imagen generada en la sección de PHP al comienzo del archivo.
Para ver un grafico, debo cargar los puntos de la base de datos.
Para ver un grafico, debo cargar los puntos de la base de datos.
El archivo que incluyo al principio “common.php” tiene el siguiente código:

<?php
include ("conf.php");
// conexion a la base de datos
$conn=mysql_connect(DB_SERVER, DB_USER, DB_PASS); //Se conecta a la base de datos.
mysql_select_db(DB_NAME,$conn);
include ("libchart/classes/libchart.php"); //-->Generacion de graficos
include ("lista_graficos.php"); //Muestra una lista con los graficos guardados
?>
Los parámetros de conexión a la base de datos los encontramos en el archivo “conf.php”:
<?php

// Database
define("DB_NAME","graficos");
define("DB_SERVER","localhost");
define("DB_USER","usuario");
define("DB_PASS","password");
?>
Finalmente y luego de llenar la base de datos con algunos puntos, si vamos a nuestro navegador e ingresamos la siguiente dirección:

http://localhost/graficos/index.php?id=1 obtendremos nuestro primer grafico, en nuestro ejemplo:

 php_graficos3

Descargar archivos de ejemplos:graficador

Librerias:aquí. Descargar la ultima version.

Espero que les sea de ayuda, cualquier cosa no duden en consultar, saludos Gerónimo.

Publicado en General, Informática, Ingeniería de Software
3 Comentarios en “Cómo crear un graficador en PHP
  1. Pablo dice:

    Muy bueno muchas Gracias!!!
    Te ganaste un 10+

  2. mike valadez dice:

    voy a probarlo en un proyecto grande a ver que tal … gracias

  3. Miguel dice:

    Perdona pero soy iniciado en la creacion de graficos en PHP.
    Entendi todo, salvo como se instala la libreri LibChart para que pueda ser usado en la programacion.
    Podrias darme unos tips al respecto?
    Gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*