Varias veces me han preguntado cómo incluir un gráficos en un documento (Word, Excel o PDF) y les he recomendado el uso de la librería de JPGRAPH, pero no les podía ayudar más, ya que yo no había probado a integrar dicha librería.
Objetivo
Disponer de un ejemplo de un gráfico de tarta 3D creado con JPGRAPH desde PHPRunner.
En el proyecto facilito todos los ejemplos que facilita el fabricante de JPGRAPH.
También, vuelvo a explicar cómo se crea el contenido de los campos de imágenes/ficheros, para después utilizar la funcionalidad de PHPRunner de visualización de las imágenes.
DEMO: https://fhumanes.com/jpgraph_runner/
Solución
La funcionalidad del aplicativo es muy simple.
Tanto en alta como en edición, sólo hay que facilitar los valores con los que se va a calcular el gráfico y cuando se vuelve a LIST, se verá el gráfico que ha calculado.
El cálculo del gráfico y el almacenado en la base de datos lo hago en el evento «After Record Added/Updated«:
include "MyCode/create_image.php"; $filename= $values['id'].".png"; $fileArray = array(); $fileArray[0]['name'] = "files/".$filename; $fileArray[0]['usrName'] = $filename; $fileArray[0]['size'] = filesize($file); $fileArray[0]['type'] = "image/png"; $fileArray[0]['searchStr'] = $filename; // Update the record $data = array(); $keyvalues = array(); $data["images"] = my_json_encode($fileArray);; $keyvalues["id"] = $values['id']; DB::Update("test_jpgraph", $data, $keyvalues );
Y el código de crear el gráficos está en «MyCode/create_image.php«:
<?php // content="text/plain; charset=utf-8" --- example27.php /* require_once ('jpgraph/jpgraph.php'); require_once ('jpgraph/jpgraph_pie.php'); require_once ('jpgraph/jpgraph_pie3d.php'); */ use mitoteam\jpgraph\MtJpGraph; require "jpgraph_10.2.2/autoload.php"; // load library and modules MtJpGraph::load(['pie','pie3d']); $data = explode(",",$values['stringValues']); // $data = array(40,60,21,33); $graph = new PieGraph(600,400); $graph->clearTheme(); $graph->SetShadow(); $graph->title->Set("A simple Pie plot"); $graph->title->SetFont(FF_FONT1,FS_BOLD); $p1 = new PiePlot3D($data); $p1->SetSize(0.5); $p1->SetCenter(0.45); $gDateLocale = new DateLocale(); $p1->SetLegends($gDateLocale->GetShortMonth()); $graph->Add($p1); $file = __DIR__."/../files/".$values['id'].".png"; unlink($file); // Delete file // $graph->Stroke('example27.png'); $graph->Stroke($file); ?>
Como siempre os dejo el proyecto para que lo instaléis en vuestros Windows y cambiéis todo lo que necesitéis y para cualquier duda o lo que necesitéis, contacta conmigo en [email protected].