Foros del Web » Programando para Internet » PHP »

Duda sobre Jpgraph: SetTickLabels

Estas en el tema de Duda sobre Jpgraph: SetTickLabels en el foro de PHP en Foros del Web. Hola, estoy creando un gráfico con Jpgraph con datos de una BD. En el eje vertical Y : tengo los valores En el eje horizontal ...
  #1 (permalink)  
Antiguo 23/06/2008, 08:09
 
Fecha de Ingreso: agosto-2007
Mensajes: 37
Antigüedad: 16 años, 8 meses
Puntos: 0
Duda sobre Jpgraph: SetTickLabels

Hola,

estoy creando un gráfico con Jpgraph con datos de una BD.

En el eje vertical Y: tengo los valores
En el eje horizontal X: tengo las fechas

Para cada día X tengo un valor Y.

Ya tengo todo el gráfico hecho, el problema que me lleva ya unos días es en el cambio de los "labels". Actualmente tengo personalizado los labels del eje X de la siguiente forma:
de la fecha, sólo muestro el mes "January", "February" "March"

el tema es que lo quiero traducir, y para ello he creado un array asociativo:
$meses = array ("1"=> "Enero", "2"=>"Febrero" ..... ) el cual mediante varias operaciones, genero un nuevo array con las etiquetas (labels) traducidas para el eje X.


resumiendo...

tengo 3 arrays:

$data //con los valores del eje Y, en total 120 items
$xdata // con las fechas del eje X,en total 120 item
$etiquetas // con los labels, también con 120 items

hago print_r para todos los arrays, y veo que tienen sus valores correctos :)

el tema es que para "setear" las nuevas labels uso:

$graph->xaxis->SetTickLabels($etiquetas);


Lo cual sólo funciona (nombre del mes en español) para el primer punto (x,y), porque en el resto de puntos sigue apareciendo el formato por defecto (nombre del mes en inglés) en el label

¿Sabeis por qué sólo lo aplica al primer elemento?

he evisado todo el docs, el how to, la community... pero nada que me lleve a la solución. Insisto en la rareza de que funcione sólo al primer item.

si alguien sabe algo, lo agradeceré!!




algo del código por si os sirve:


Código PHP:
$graph = new Graph(420,160);
$graph->SetMargin(60,20,10,50);//izda, dcha, arriba, abajo

$graph->SetScale('datlin',0,0);

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

//$graph->xaxis->SetLabelAngle(90);
$graph->xaxis->scale->SetDateFormat("M");

$graph->xaxis->SetTickLabels($etiquetas);
$graph->xaxis->SetTextLabelInterval(30);

$graph->xaxis->SetLabelFormatString('My',true);


$graph->xaxis->SetColor("#565656");
$graph->yaxis->SetColor("#565656");
$graph->ygrid->SetFill(true,'#[email protected]','#[email protected]');

$graph->SetGridDepth(DEPTH_BACK);
$graph->SetMarginColor('white');
$graph->SetFrame(false);
$graph->yaxis->HideZeroLabel();


//$graph->xaxis->HideFirstLastLabel(); 


$graph->xtick_factor 1;
$graph->xaxis->HideTicks(truetrue); 


$line = new LinePlot($data,$xdata);
$line ->SetColor("#007BA8"); 
//$line->SetLegend('Year 2005');
$line->SetFillColor('#DDE5FF');
//$line->value->Show();  //Muestra los valores sobre sus coordenadas (x,y)
$graph->Add($line);

$graph->Stroke();


//echo "etiquetas: <br><br>"; print_r($etiquetas); echo "<br><br>";

//echo "los datos son: <br><br>"; print_r($xdata); 

Última edición por sebas.valenciano; 23/06/2008 a las 09:11 Razón: corrijo el code :)
  #2 (permalink)  
Antiguo 24/06/2008, 08:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Duda sobre Jpgraph: SetTickLabels

Hola sebas.valenciano,

Tu estas usando con SetScale, le pasas que es fecha, y jpgraph automáticamente usa date internamente para obtener los resultados, para formatearlos a una fecha en español debes de usar date_timezone_set, y setlocale.

Saludos.
  #3 (permalink)  
Antiguo 01/07/2008, 05:18
 
Fecha de Ingreso: agosto-2007
Mensajes: 37
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Duda sobre Jpgraph: SetTickLabels

hola!

he estado mirando en Google acerca de date_timezone_set, y setlocale en el uso de jpgraph pero no he visto nada...


he probado poner:
Código:
date_timezone_set('Europe/Madrid');
setlocale(LC_TIME, 'es_ES');

y esto otro
Código:
setlocale(LC_TIME,"es_ES", "es", "spanish"); 
setlocale (LC_TIME,"es", "spanish", "es_ES.UTF-8");  
pero no consigo traducir las fechas...

el objetivo es tener en el eje de las X algo tal como:

Dic-07, Ener-08, Febr-08.... es decir, en español

hay algún detalle que se me escapa?



gracias

Última edición por sebas.valenciano; 01/07/2008 a las 05:42 Razón: modifico la consulta
  #4 (permalink)  
Antiguo 24/08/2008, 08:36
 
Fecha de Ingreso: agosto-2008
Ubicación: Valparaiso, Chile
Mensajes: 4
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Duda sobre Jpgraph: SetTickLabels

Pues yo así fue que solucioné ese problema también, con un array de meses del estilo:

Código PHP:
$meses = array(enerofebrero, .....) 
y luego poniéndolo en el setticklabels
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 16:57.