crear graficas con JPGRAPH

Iniciado por RedZer, 9 Febrero 2011, 05:57 AM

0 Miembros y 1 Visitante están viendo este tema.

RedZer

Bueno el problema es el siguiente estoy intetentando crear graficas utilizando esta libreria de echo si me crea la grafica el problema surge cuando quiero mostrar los resultados
ejemplo tengo una tabla llamada actividades y otra llamada asignacion en tonces a cada trabajador se le asignara una actividad  y yo lo que quiero es mostrar cuantos trabjadores participaron en la actividad del dia de las madres  o bien en el dia de san valentin por decirlo asi , la grafica que estoy intentando hacer es la grafica de barras de echo si me los muestra pero no con los resultados deceados :-\ lo que me hace el codigo que planteare es mostrarme solo una barra cuando me deberia de mostrar 3 barras por que son 3 actividades en las que estan participando los empleados mi codigo es el siguiente
Código (php) [Seleccionar]


<?php
include("jpgraph/inc/jpgraph.php");
include(
"jpgraph/inc/jpgraph_bar.php");
include(
"conexion.php");

conectar();
$result=mysql_query("select * FROM actividades ");
desconectar();
if (
mysql_num_rows($result)>0)
{

while (
$row=mysql_fetch_array($result))
{


  
conectar();
$queEmp1 mysql_query("SELECT COUNT(id_actividad)as num,id_actividad FROM asignacion  where id_actividad='$row[0]'");
$rowEmp1 mysql_fetch_assoc($queEmp1);
 
$num=$rowEmp1['num'];

desconectar();



//AQUI ES DONDE TENGO EL PROBLEMA CREO YA QUE NADA MAS ME MUESTRA UNA BARRA CUANDO ME deberia DE MOSTRAR 3 YA QUE LA VARIABLE NUM ME ESTA DEVOLVIENDO 3 VALORES OSEA 1,1,1.
$ydata=array($num);




    }

     }



$graph = new Graph(750350"auto");    
$graph->SetScale("textlin");

$graph->img->SetMargin(40202040);
$graph->title->Set("GRAFICA DE ACTIVIDADES  ");
$graph->xaxis->title->Set("Altura" );
$graph->yaxis->title->Set("Total" );


$barplot =new BarPlot($ydata);
$barplot->SetColor("orange");

$graph->Add($barplot);
$graph->Stroke();
?>


Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

Castg!

Código (php) [Seleccionar]

<?php
include("jpgraph/inc/jpgraph.php");
include(
"jpgraph/inc/jpgraph_bar.php");
include(
"conexion.php");

conectar();
$result=mysql_query("select * FROM actividades ");

$ydata=array();

if (
mysql_num_rows($result)>0) {
while ($row=mysql_fetch_array($result)) {
$queEmp1 mysql_query("SELECT COUNT(id_actividad)as num,id_actividad FROM asignacion where id_actividad='".$row[0]."'");
$rowEmp1 mysql_fetch_assoc($queEmp1);
$num=$rowEmp1['num'];

//AQUI ES DONDE TENGO EL PROBLEMA CREO YA QUE NADA MAS ME MUESTRA UNA BARRA CUANDO ME deberia DE MOSTRAR 3 YA QUE LA VARIABLE NUM ME ESTA DEVOLVIENDO 3 VALORES OSEA 1,1,1.
$ydata[]=$num;
}
}

desconectar();

$graph = new Graph(750350"auto");    
$graph->SetScale("textlin");

$graph->img->SetMargin(40202040);
$graph->title->Set("GRAFICA DE ACTIVIDADES  ");
$graph->xaxis->title->Set("Altura" );
$graph->yaxis->title->Set("Total" );

$barplot =new BarPlot($ydata);
$barplot->SetColor("orange");

$graph->Add($barplot);
$graph->Stroke();

?>



Podrias explicar un poco mejor como están compuestas las tablas? Practicamente que valor o columna está devolviendo $row[0]?
Fijate en el codigo que puse, te saque algunos "conectar()" y "desconectar()" que veia inecesarios, pero, que función realizan dichas?
Además lo que hice fue declarar la variable $ydata como array y en el while se le agrega un nuevo indice con el valor $num. Lo estoy haciendo a ciegas asi que nose si es esto lo que queres. Explicate un poco más.

Saludo!

RedZer

muchas gracias Castg! me sacaste de un lio practicamente era esta parte lo que me estaba fallando $ydata[]=$num; y mira $row[0] vendria siendo el id de mi tabla actividades  por que cuando yo asigno una actividad lo guardo en la tabla asignacion junto con datos personales del trabjador pero en la tabla asignacion solo guardo el id de la actividad  mis tablas tienen la siguiente estructura
TABLA ACTIVIDADES
Código (sql) [Seleccionar]

id_actividad
nombre_actividad
hora
fecha d inicio
fecha de terminacion
lugar
actividad     


TABLA ASIGNACION

Código (sql) [Seleccionar]

id_asignacion
id_actividad
nombre
apellidos
departamento
rpe
sexo
contrato


bueno mira tengo otra duda como puedo imprimir titulos de bajo de las barras lo estoy intentando con este codigo $graph->xaxis->SetTickLabels(array($row[1]));  pero nada mas me imprime un solo titulo mi codigo completo quedo asi

Código (php) [Seleccionar]

<?php
include("jpgraph/inc/jpgraph.php");
include(
"jpgraph/inc/jpgraph_bar.php");
include(
"conexion.php");

conectar();
$result=mysql_query("select * FROM actividades ");
desconectar();
if (
mysql_num_rows($result)>0)
{

while (
$row=mysql_fetch_array($result))
{


  
conectar();
$queEmp1 mysql_query("SELECT COUNT(id_actividad)as num,id_actividad FROM asignacion  where id_actividad='$row[0]'");
$rowEmp1 mysql_fetch_assoc($queEmp1);
 
$num=$rowEmp1['num'];

desconectar();


//crea una serie para un grafico de barras
$graph = new Graph(750350"auto");  
$graph->SetScale("textlin");
$graph->title->Set("GRAFICA DE ACTIVIDADES  ");
$graph->img->SetMargin(40202040);
//Asigna las etiquetas para los valores del eje x
$graph->xaxis->SetTickLabels(array($row[1]));
$ydata[]=$num;
$graph->yaxis->title->Set("Total" );

    }

     }




$barplot =new BarPlot($ydata);
$barplot->SetColor("orange");

$graph->Add($barplot);
$graph->Stroke();

  

?>

Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

RedZer

ya quedo dejo el codigo completo muchisimas gracias castg
Código (php) [Seleccionar]


<?php
include("jpgraph/inc/jpgraph.php");
include(
"jpgraph/inc/jpgraph_bar.php");
include(
"conexion.php");

conectar();
$result=mysql_query("select * FROM actividades ");
desconectar();
if (
mysql_num_rows($result)>0)
{

while (
$row=mysql_fetch_array($result))
{


  
conectar();
$queEmp1 mysql_query("SELECT COUNT(id_actividad)as num,id_actividad FROM asignacion  where id_actividad='$row[0]'");
$rowEmp1 mysql_fetch_assoc($queEmp1);
 
$num=$rowEmp1['num'];

desconectar();

$vector[]=$row[6];
//crea una serie para un grafico de barras
$graph = new Graph(750350"auto");  
$graph->SetScale("textlin");
$graph->title->Set("GRAFICA DE ACTIVIDADES  ");
$graph->img->SetMargin(40202040);
//Asigna las etiquetas para los valores del eje x
//$graph->xaxis->SetTickLabels(array($row[6]));
$graph->xaxis->SetTickLabels($vector);


$ydata[]=$num;
$graph->yaxis->title->Set("Total" );

    }

     }




$barplot =new BarPlot($ydata);
$barplot->SetColor("orange");

$graph->Add($barplot);
//para ponerlo en negritas los titulos
$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);
$graph->Stroke();

  

?>




Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

Castg!

Ya con esa clase no te puedo ayudar yo :P
Unplacer ayudarte, nunca dudes en comentar tus problemas que seguramente te vamos a poder ayudar

RedZer

#5
bueno hay un detalle minimo que llevo la mitad del dia buscando como hacerle pero no hay info de eyo no se aque se deba quiero poner un icono  de una impresora obiamente para que el usuario pueda imprimir la grafica la cuestion es que no me lo acepta mas bien no me aroja la imagen pense que era por que la imagen de la impresora lo tapaba la imagen de la grafica entonces decidi hacer unos saltos de linea y ni asi saben por que? el codigo completo es el siguiente

Código (php) [Seleccionar]

<?php
include("jpgraph/inc/jpgraph.php");
include(
"jpgraph/inc/jpgraph_bar.php");
include(
"conexion.php");





conectar();
$result=mysql_query("select * FROM actividades ");
desconectar();
if (
mysql_num_rows($result)>0)
{

while (
$row=mysql_fetch_array($result))
{


  
conectar();
$queEmp1 mysql_query("SELECT COUNT(id_actividad)as num,id_actividad FROM asignacion  where id_actividad='$row[0]'");
$rowEmp1 mysql_fetch_assoc($queEmp1);
 
$num=$rowEmp1['num'];

desconectar();

$vector[]=$row[6];
//crea una serie para un grafico de barras
$graph = new Graph(1000350"auto");  
$graph->SetScale("textlin");
$graph->title->Set("GRAFICA DE ACTIVIDADES  ");
$graph->img->SetMargin(40202040);
//Asigna las etiquetas para los valores del eje x

$graph->xaxis->SetTickLabels($vector);
//$graph->xaxis->SetLabelAngle(90); //damos el angulo a la etiqueta de 0 a 90 

$ydata[]=$num;
$graph->yaxis->title->Set("Total" );

    }

     }





$barplot =new BarPlot($ydata);
$barplot->SetColor("red");
//$barplot->SetFillColor('green');
$graph->Add($barplot);
$graph->Stroke();

  

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<img src="imagenes/printer.png" width="16" height="16" onClick="window.print();" />


</body>
</html>


Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo