Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   Duda sobre Jpgraph: SetTickLabels (http://www.forosdelweb.com/f18/duda-sobre-jpgraph-setticklabels-599184/)

sebas.valenciano 23/06/2008 08:09

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); 


GatorV 24/06/2008 08:38

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.

sebas.valenciano 01/07/2008 05:18

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

Exalin 24/08/2008 08:36

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


La zona horaria es GMT -6. Ahora son las 07:41.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.