Foros del Web » Programando para Internet » PHP »

Graficos

Estas en el tema de Graficos en el foro de PHP en Foros del Web. Como realizo graficar unos datos que tengo en un archivo plano, a una grafica variable (como una torta de excell) y me realice los calculos ...
  #1 (permalink)  
Antiguo 26/12/2002, 15:28
 
Fecha de Ingreso: agosto-2001
Mensajes: 19
Antigüedad: 16 años, 3 meses
Puntos: 0
Pregunta Graficos

Como realizo graficar unos datos que tengo en un archivo plano, a una grafica variable (como una torta de excell) y me realice los calculos de % y cuando me posicione encima de la grafica me despliegue los valores.
__________________
Leonardo Fabio Muñoz Bedoya
  #2 (permalink)  
Antiguo 26/12/2002, 17:14
Avatar de AngelRoyo  
Fecha de Ingreso: marzo-2002
Ubicación: Santiago de Chile
Mensajes: 207
Antigüedad: 15 años, 8 meses
Puntos: 5
Podrias pensar en algo más simple.

Lo mas simple es usar graficos horizontales, igual como los tiene este mismo foro en sus encuestas. "busca posteos que digan encuesta"

lo unico que haces es leer el valor de tu archivo y lo procesas y lo metes en el width del tag img de html. Y el ALT asi pasas el mosue por encima y te da el valor.

... width="'.$valorporcentaje.'" ALT="'.$valor'." ...

Pero tu quieres de torta, eso lleva su tiempo. Pero en www.phpbuilder.com ahi un excelente tutorial de graficación seccion GD. Con eso quedas ok en el tema. Tambien ahí codigo ya fabricado para hacer uno de torta 3D.

Saludos.
__________________
Hacerlo Bien Haciendo el Bien.
Jaso ezazu agur bero bat.
(c) 2002. Made in Chile.
Mi sistema es:
Win(98);Apache(1.3.x);PHP(4.1.1);mySQL(3.23.x)
!Califica este POSTEO¡
  #3 (permalink)  
Antiguo 31/12/2002, 09:35
 
Fecha de Ingreso: enero-2002
Ubicación: Stgo.
Mensajes: 60
Antigüedad: 15 años, 10 meses
Puntos: 0
bueno hace tiempo encontre un script para paginar con sql server aqui va la funcion
/************************************************** ****/
/* Funcion paginar
* actual: Pagina actual
* total: Total de registros
* por_pagina: Registros por pagina
* enlace: Texto del enlace
* maxpags: El máximo de páginas a presentar simultáneamente (opcional)
* Devuelve un texto que representa la paginacion
*/
function paginar($actual, $total, $por_pagina, $enlace, $maxpags=0) {
$total_paginas = ceil($total/$por_pagina);
$anterior = $actual - 1;
$posterior = $actual + 1;
$minimo = $maxpags ? max(1, $actual-ceil($maxpags/2)): 1;
$maximo = $maxpags ? min($total_paginas, $actual+floor($maxpags/2)): $total_paginas;
if ($actual>1)
$texto = "<a href=\"$enlace$anterior\">&laquo;</a> ";
else
$texto = "<b>&laquo;</b> ";
if ($minimo!=1) $texto.= "... ";
for ($i=$minimo; $i<$actual; $i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
$texto .= "<b>$actual</b> ";
for ($i=$actual+1; $i<=$maximo; $i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
if ($maximo!=$total_paginas) $texto.= "... ";
if ($actual<$total_paginas)
$texto .= "<a href=\"$enlace$posterior\">&raquo;</a>";
else
$texto .= "<b>&raquo;</b>";
return $texto;
}


esta la llamas desde el programa aqui va un ejemplo


<?php
session_start();
include("conexionbd.php");
$myconn = conectarse();
$color='#FFFFCC';
echo "<div align='center'><img src='imagenes/repasignacion.png' width='554' height='102'></div>";

if (!isset($pag)) $pag = 1; // Por defecto, pagina 1
$tampag = 2;
$reg1 = ($pag-1) * $tampag;
$result = mssql_query("SELECT PROYECTOS.Reg_ID, ASIGNACION_PRESUPUESTARIA.Asignacion_codigo, PROYECTOS.Pry_ID, PROYECTOS.Sub_sec_ID,PROYECTOS.Com_id, PROYECTOS.Pry_nom, PROYECTOS.Pry_financ, PROYECTOS.Pry_monto, PROYECTOS.Pry_FNDR, PROYECTOS.Pry_monto_RS, PROYECTOS.Pry_cos_tot, PROYECTOS.Pry_creacion
FROM ASIGNACION_PRESUPUESTARIA INNER JOIN PROYECTOS ON ASIGNACION_PRESUPUESTARIA.Reg_ID = PROYECTOS.Reg_ID AND ASIGNACION_PRESUPUESTARIA.Codigo = PROYECTOS.Pry_ID
WHERE (ASIGNACION_PRESUPUESTARIA.Asignacion_marca = 1) AND (ASIGNACION_PRESUPUESTARIA.Reg_ID = '$region') AND (PROYECTOS.Reg_ID = '$region')");
$total = mssql_num_rows($result);
if (mssql_num_rows($result)){
echo "Fecha Reporte :".date("m/d/y");
echo "<br>";
echo "<table border = '1'> \n";
echo "<tr>
<td align=center bgcolor='$color'>Region</b></td>
<td align=center bgcolor='$color'>Nº Asignacion</b></td>
<td align=center bgcolor='$color'>Codigo Proyectos</b></td>
<td align=center bgcolor='$color'>Codigo Subsector</b></td>
<td align=center bgcolor='$color'>Codigo Comuna</b></td>
<td align=center bgcolor='$color'>Nombre Proyecto</b></td>
<td align=center bgcolor='$color'>Financiamiento</b></td>
<td align=center bgcolor='$color'>Monto Asignado</b></td>
<td align=center bgcolor='$color'>Monto FNDR</b></td>
<td align=center bgcolor='$color'>Monto RS</b></td>
<td align=center bgcolor='$color'>Costo Total</b></td>
<td align=center bgcolor='$color'>Año Creacion</b></td></tr>\n";
for ($i=$reg1; $i<min($reg1+$tampag, $total); $i++) {
mssql_data_seek($result, $i);
$row = mssql_fetch_array($result);
echo "<tr><td>".$row["Reg_ID"]."</td>".
"<td>".$row["Asignacion_codigo"]."</td>".
"<td>".$row["Pry_ID"]."</td>".
"<td>".$row["Sub_sec_ID"]."</td>".
"<td>".$row["Com_id"]."</td>".
"<td>".$row["Pry_nom"].

"<td>".$row["Pry_financ"]."</td>".
"<td>".$row["Pry_monto"]."</td>".
"<td>".$row["Pry_FNDR"]."</td>".
"<td>".$row["Pry_monto_RS"]."</td>".
"<td>".$row["Pry_cos_tot"].
"<td>".$row["Pry_creacion"].

"</td></tr> \n";
}
echo "</table> \n";
echo paginar($pag, $total, $tampag, "cliente.php?pag=");
}
else{
echo "¡ No se ha encontrado ningún registro !";}
echo "<div align='center'><a href ='reporasignacion.php'>Volver al Menu </a></div>";
mssql_close($myconn) ;
?>

cualquier cosa me avisas a mi me funciona perfectamente
  #4 (permalink)  
Antiguo 31/12/2002, 09:38
 
Fecha de Ingreso: enero-2002
Ubicación: Stgo.
Mensajes: 60
Antigüedad: 15 años, 10 meses
Puntos: 0
DIsculma me equivoque al responder este mensaje
  #5 (permalink)  
Antiguo 31/12/2002, 10:55
Avatar de chalito  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago, chile
Mensajes: 221
Antigüedad: 15 años
Puntos: 0
Chuta que estamos perdios jajaj
Bueno, enrealidad para graficar es muy facil, solo vez cuantos registros hay, obiamente eso es el 100% de todo, luego en base a eso calculas los porcentajes de cada uno por separado y ese valor de lo asignas al tamaño de una tatbla que tenga fondos con colores variados, con eso ya tienes graficos

Saludos
  #6 (permalink)  
Antiguo 31/12/2002, 15:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Chalito .. lee la pregunta .. se está hablando de un gráfico de "torta" (o tarta, sectores o como lo quieran llamar) ...

Ese tipo de "graficos" dinámicos se hacen con las librerias GD para PHP .. Hay bastantes librerias ya para generar variados graficas (de torta y otras ...):

En hotscrips por ejemplo tienes varias aplicaciones que hacen el trabajo:
http://www.hotscripts.com/PHP/Script...hs_and_Charts/

Algunas son "classes" (objetos PHP) te recomiendo este tipo de "aplicaciones" .. pues en su documentación te dirán como y que valores necesita para "graficar" .. así puedes hacerte tu por otro lado el proceso de leer los datos necesarios de un fichero de texto plano o de una base de datos .. o cualquier medio.

En phpclasses.org por ejemplo tienes exclusivamente Objetos de este tipo (y otros en general):
http://www.phpclasses.org/browse.html/class/11.html


(cabe decir .. q las librerias GD tienen que estar instaladas en el servidor que corra PHP ... son unas extensiones).

Un saludo,
  #7 (permalink)  
Antiguo 31/12/2002, 16:40
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
jeje yo recomiendo la generacion de graficos via XMLya que los graficos con GD al ser redondos quedan pixelados y poco finos, en cuanto al formato XMLm me refiero SVG que son graficos vectoriales y jeje es mu sencillo, tan solo has de saber los tags necesarios y generar un documento SVG (que es code XML) via PHP y tirandode echo o printf() lo que mas prefieras tienes un articulo sobre ello en www.zend.com
__________________
Usuario registrado de Linux #288725
  #8 (permalink)  
Antiguo 31/12/2002, 18:20
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 16 años, 2 meses
Puntos: 6
Pues si jejeje, de hecho el Scalable Vector Graphics (SVG) es una opcion muy buena y se pueden hacer cosas muy profesionales el unico pero que le veo a esto de momento y que no comento epplestun es que requieres un plugin en el navegador para viasualizar los documentos con esta tecnologia, pero es una opcione bastante interesante y que tiene mucho potencial.

Otra opcion sencilla para hace lo que requieres si no te decides por el uso de Scalable Vector Graphics (SVG) es que uses la clase JpGraph que es sencilla de usar y con la cual crear tambien trabajo muy finos pero ya la decision es toda tuya como quiera te djo el enlace para qu ete documentes en las dos opciones
Scalable Vector Graphics (SVG):http://www.w3.org/TR/SVG/
JpGraph: http://www.aditus.nu/jpgraph/

Ojo que el formato para SVG necesita un un plugin que puedes bajar del sitio de adobe y para JpGraph necesitas tener instalado el soporte para gd en php.
  #9 (permalink)  
Antiguo 01/01/2003, 21:54
Avatar de SpiceMan  
Fecha de Ingreso: noviembre-2002
Mensajes: 160
Antigüedad: 15 años
Puntos: 0
Como aclaracion: el plugin del Acrobat Reader permite ver SVG, no es el unico.

Para otras implementaciones de SVG rendering: http://www.w3.org/Graphics/SVG/SVG-Implementations.htm8
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 04:16.