Hasta este momento nos hemos ocupado del caso cuando colocamos una gr�fica dentro de un dibujo. Para su visualizaci�n hemos utilizado la funci�n DrawGraph(). Pero si tuvi�ramos la necesidad de colocar dos o m�s gr�ficas en un dibujo, no podr�amos visualizarlas con la ayuda de esta funci�n (si lo hici�ramos, la p�gina con la gr�fica se generar�a a la primera llamada de esa funci�n, por lo que la segunda gr�fica nunca aparecer�a). En este caso, debemos encontrar la manera que nos permita preparar cada una de las gr�ficas por separado, y despu�s visualizarlas juntas. Intentemos crear un ejemplo sencillo con una gr�fica de pastel, y luego, a�adirle una gr�fica de barras. El c�digo del ejemplo que genera la gr�fica de pastel se muestra en el Listado 4.
<?php include_once("phplot.php"); $data=array( array("Votaci�n",30,25,12,33) ); $graph = new PHPlot(); $graph->SetDataValues($data); $graph->SetDataType("text-data"); $graph->SetPlotType("pie"); $graph->SetTitle("Resultados de la votaci�n"); $graph->SetLegend( array("Partido A", "Partido B", " Partido C", " Partido D")); $graph->DrawGraph(); ?>
Vemos que, comparando con los ejemplos anteriores, no hay nada nuevo. El array de datos contiene solo un array de valores, ya que solamente datos de este tipo sirven para visualizarlos en gr�ficas de pastel. La gr�fica se despliega gracias a la utilizaci�n del m�todo DrawGraph() (la �ltima l�nea del script). Pensemos qu� suceder�a si al script presentado le a�adi�ramos el c�digo que despliega una gr�fica adicional. Este script se presenta en el Listado 5.
<?php include_once("phplot.php"); $data=array(array("Votaci�n",30,25,12,33)); $graph = new PHPlot(); $graph->SetDataValues($data); $graph->SetDataType("text-data"); $graph->SetPlotType("pie"); $graph->SetTitle("Resultados de la votaci�n"); $graph->SetLegend(array("Partido A", "Partido B", "Partido C", "Partido D")); $graph->DrawGraph(); $graph->SetDataValues($data); $graph->SetDataType("text-data"); $graph->SetPlotType("bar"); $graph->SetLegend(array()); $graph->DrawGraph(); ?>
Desafortunadamente, s�lo se abre la primera gr�fica (la de pastel), como consecuencia de la primera llamada a la funci�n DrawGraph(). Se realiza la creaci�n de la p�gina que contiene la gr�fica de pastel y la env�a al navegador. En este caso, la gr�fica que se crea en la segunda posici�n no aparecer� nunca. Por suerte, utilizando la librer�a PHPlot se pueden separar el proceso de dibujar la gr�fica (es decir, colocaci�n de la gr�fica en el dibujo) del proceso de despliegue del dibujo que contiene las gr�ficas. Por defecto, la funci�n DrawGraph(), adem�s de dibujar la gr�fica, tambi�n ocasiona su visualizaci�n. Para deshabilitar su funcionamiento por defecto, primero debemos utilizar el m�todo SetPrintImage() con false como par�metro. Adem�s, debemos prevenir que una gr�fica no se coloque encima de la otra, se puede (del mismo modo para la primera gr�fica que para la segunda) recurrir al m�todo SetNewPlotAreaPixels(), proporcionando las coordenadas del �rea rectangular, donde quedar� ubicada la gr�fica dentro del dibujo. Estas coordenadas son expresadas en p�xeles y convertidas en relaci�n a la esquina superior izquierda de la pantalla. Todav�a nos queda utilizar el m�todo que despliega el dibujo con las dos gr�ficas. Esto lo realiza el m�todo PrintImage(). El Listado 6 presenta los elementos m�s importantes del c�digo del Listado 5 enriquecido por los m�todos que permiten crear la p�gina con varias gr�ficas. El ejemplo del funcionamiento de este c�digo se muestra en la Figura 8.
<?php include_once("phplot.php"); $data=array(array("Votaci�n",30,25,12,33)); $graph = new PHPlot(800,600); $graph->SetPrintImage(false); $graph->SetDataValues($data); ... ... $graph->DrawGraph(); $graph->SetDataValues($data); ... ... $graph->SetNewPlotAreaPixels(40,10,300,180); $graph->DrawGraph(); $graph->PrintImage(); ?>
![Figura 8: Dos gráficas en un dibujo](/cursos_descargas/phpsol_phplot/figura8.gif)