Foros del Web » Programando para Internet » PHP »

Error JPGRAPH

Estas en el tema de Error JPGRAPH en el foro de PHP en Foros del Web. Hola a todos, tengo un problema con el JPGRAPH y me produce este error "JpGraph Error Either X or Y data arrays contains non-numeric values. ...
  #1 (permalink)  
Antiguo 15/01/2008, 09:06
 
Fecha de Ingreso: mayo-2007
Mensajes: 44
Antigüedad: 16 años, 11 meses
Puntos: 0
Error JPGRAPH

Hola a todos,

tengo un problema con el JPGRAPH y me produce este error

"JpGraph Error Either X or Y data arrays contains non-numeric values. Check that the data is really specified as numeric data and not as strings. It is an error to specify data for example as '-2345.2' (using quotes)."

El error es por un dato que efectivamente es erroneo.
Mi pregunta es ¿como puedo controlar ese error para que continue con el siguiente grafico?

No se el nº de graficos a generar ya que los selecciona el usuario por checkbox.
Utilizo un for para cada checkbox activado me genere un grafico en fichero que luego añado al web.
Si se produce un error de un grafico ya no crea el resto de graficos y aparece en el web el mensaje arriba indicado.

Esta es la función que me crea cada grafico.
la llamada a la función está dentro de un FOR

Código PHP:
<?Php

include ("../jpgraph/jpgraph.php");
//include ("../jpgraph/jpgraph_log.php");
include ("../jpgraph/jpgraph_line.php");

////////////////////////////////////////////////////////


//// Crea Grafico de lineas a partir de los arrays ///////////////////
function grafico($ydata,$datax,$titulo,$num_fich,$elfi,$n_rnc){

// Create the graph. These two calls are always required
$graph = new Graph(900,300,"auto"); // ancho,alto
$graph->SetScale("textlin");
//$graph->SetYScale(0,"lin",$min,$max); 
//$graph->yaxis->scale->ticks->Set(1); 
$graph -> img -> SetImgFormat('jpeg');
$graph->img->SetMargin(50,110,40,80); // izq,der,arriba,abajo
$graph->SetShadow();

$graph->ygrid->Show(true,true);//
$graph->xgrid->Show(true,false);

// Specify the tick labels
//$a = $gDateLocale->GetShortMonth();
//$graph->yaxis->SetTickLabels($ydata); 
$graph->xaxis->SetTickLabels($datax); // texto datos en X1
$graph->xaxis->SetLabelAngle(90); // girar texto
//$graph->yaxis->SetTickLabels($ydata);
// Create the linear plot
$lineplot=new LinePlot($ydata);

// Add the plot to the graph
$graph->Add($lineplot);

$graph->title->Set("Gráfica ".$n_rnc" - " .$titulo);
/*$graph->xaxis->title->Set("X-title");
$graph->yaxis->title->Set("Y-title");*/

$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

$lineplot->SetColor("blue");
$lineplot->SetWeight(2);

$graph->yaxis->SetColor("blue");

$lineplot->SetLegend($titulo);

$graph->legend->Pos(0.01,0.01,"right","top");
$ruta="img/".$elfi ."_graf_".$num_fich .".jpg";
// Display the graph $elfi ."_graf_".$num_fich .".jpg"
$graph->Stroke($ruta);

$elgra=$elfi ."_graf_".$num_fich .".jpg";

return 
$elgra;

}



?>
Este es el codigo de llamada a la función

Código PHP:
for (..........){

// llamada a la funcion
   
$elgra=grafico($datos[$n_check],$datos[1],$miarray[0][$n_check],$n_check,$mirnc,$larnc);
   
//$datos[$n_check],$datos[1]  $dat,$
 
   
$elgra1="img/".$elgra;
  
// echo $elgra;
   
if (file_exists($elgra1)) {
      
//   print_r($graficos);
    
echo "<IMG src='./img/".$elgra ."' alt='' border='0'>";
       
$fich_gra[]=$elgra
       
$nom_camp[]=$miarray[0][$n_check];
} else {

    echo 
"<b>El Gráfico "$miarray[0][$n_check]." no se ha podido crear</b>";

}
   echo 
"</td>";
   echo 
"</tr>";
  } 
La verdad es que no tengo ni idea en donde puede controlar el error, si es en la función o en algunos de los include.

Ayuda please.

Saludos
  #2 (permalink)  
Antiguo 15/01/2008, 09:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Error JPGRAPH

Cicla por los resultados, y verifica el tipo de valor, va a ser la única forma así si encuentras un error en un valor puedes usar continue; para pasar al siguiente ciclo.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:31.