Problema al mostrar valor en la parte superior de un gráfico de barras

Buen día estimados, estoy haciendo algunos reportes estadísticos con gráficos de barras, partiendo de la base del toba_referencia, pero se me presenta un problema ya que no puedo mostrar el valor en la parte superior de la barra de cada categoría. He probado , en función a algunos ejemplos la propiedad value->show, pero no obtuve solución. Tienen alguna idea como encararlo?


$grafico->conf()
			->serie__agregar('Produccion por mes', $vector)
			->serie__set_color('aquamarine3')
			->canvas()->value->Show() ///Aca me arroja error con este esquema
			->canvas()->xaxis->SetTickLabels ($vector2);

Desde ya muchas gracias por su ayuda. Saludos.

Hola Facundo,

de lo que veo en el código pareciera que tenes que llamar al método SetValuePos() para ubicar los valores por encima de las barras, hasta donde probe… no tuve exito pero se supone que con eso se ubican los valores. La llamada creo que quedaría asi:


$grafico->conf()
			->serie__agregar('Produccion por mes', $vector)
			->serie__set_color('aquamarine3')
                        ->serie__get_activa() ->SetValuePos('top');

Esto aparentemente lo manejaría el BarPlot, tendría que investigar un poco mas para ver como se relaciona con los Axis, así te toma los textos correspondientes.

Saludos

Buenas tardes Richard, gracias por tu respuesta, estuve viendo lo que comentas, todavía no lo puedo solucionar, pero en la búsqueda me encontré con un ejemplo a “mano” de la gráfica el cual implementa la opción para mostrar el valor, pero no pude hacerlo funcionar accediendo por el canvas al gráfico generado en toba. Básicamente el ejemplo genera el gráfico, modifica los parámetros y finaliza con un stroke.


<?php
require_once ('jpgraph/src/jpgraph.php');
require_once ('jpgraph/src/jpgraph_bar.php');
 
// Se define el array de datos
$datosy=array(25,16,24,5,8,31);
 
// Creamos el grafico
$grafico = new Graph(500,250);
$grafico->SetScale('textlin');
 
// Ajustamos los margenes del grafico-----    (left,right,top,bottom)
$grafico->SetMargin(40,30,30,40);
 
// Creamos barras de datos a partir del array de datos
$bplot = new BarPlot($datosy);
 
// Configuramos color de las barras
$bplot->SetFillColor('#479CC9');
 
//Añadimos barra de datos al grafico
$grafico->Add($bplot);
 
// Queremos mostrar el valor numerico de la barra
$bplot->value->Show();
 
// Configuracion de los titulos
$grafico->title->Set('Mi primer grafico de barras');
$grafico->xaxis->title->Set('Titulo eje X');
$grafico->yaxis->title->Set('Titulo eje Y');
 
$grafico->title->SetFont(FF_FONT1,FS_BOLD);
$grafico->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$grafico->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
 
// Se muestra el grafico
$grafico->Stroke();
?>

Saludos.

Hola Facundo,

me parece que el problema esta en como lo accedes, el canvas no es el grafico de barras… sino la ‘imagen’ que lo representa. El barPlot (desde donde podes hacer la referencia a value) lo tiene la serie activa. Para mi deberias tener una llamada asi:


->serie__get_activa() ->SetValuePos('top')
->serie__get_activa() ->value->Show();

Saludos

Hola, no se si lo pudieron solucionar. Pero a mi me salió mediante este código:

$cp = new BarPlot($datos);

$cp->SetFillGradient(“#BE81F7”, “#E3CEF6”, GRAD_HOR); //color gradiente

$cp->SetValuePos(‘top’); // Pone los valores arriba de la barra

$cp->value->Show();

$canvas->Add($cp); // Con esta llamada informamos al gráfico cuál es el gráfico que se tiene que dibujar

$grafico->conf()->canvas__set($canvas);