2011-08-08 72 views
7

Estoy empezando con jpgraph y XAMPP. Estaba buscando hacer una barra de barras. Mientras leía algunos artículos en la web, decía que podía pasar una serie de colores para ajustar el color para que cada barra tuviera un color diferente. Sin embargo, cada vez que paso el color, el gráfico no cambiará de su color predeterminado, azul claro.Jpgraph no cambiará los colores en mi barra de barras

El gráfico responde a los cambios en los datos, pero no a los cambios en el color. Intenté con un ejemplo de gráfico de barras acumulado y que parece responder al color.

No estoy seguro de cómo diagnosticar un problema como este. ¡Ayuda por favor!

código de abajo (Ejemplo de la documentación JpGraph con color cambió de naranja a # B0C4DE [naranja de la original ejemplo no se muestra]):

<?php // content="text/plain; charset=utf-8" 
require_once(dirname(__FILE__)."\lib\jpgraph-3.5.0b1\src\jpgraph.php"); 
require_once(dirname(__FILE__)."\lib\jpgraph-3.5.0b1\src\jpgraph_line.php"); 
require_once(dirname(__FILE__)."\lib\jpgraph-3.5.0b1\src\jpgraph_bar.php"); 

$datay=array(2,3,5,25,15,6,3); 
$datax=array('Jan','Feb','Mar','Apr','May','Jun','Jul'); 

// Size of graph 
$width=400; 
$height=500; 

// Set the basic parameters of the graph 
$graph = new Graph($width,$height,'auto'); 
$graph->SetScale('textlin'); 

// Rotate graph 90 degrees and set margin 
$graph->Set90AndMargin(50,20,50,30); 

// Nice shadow 
$graph->SetShadow(); 

// Setup title 
$graph->title->Set('Horizontal bar graph ex 1'); 
$graph->title->SetFont(FF_VERDANA,FS_BOLD,14); 

// Setup X-axis 
$graph->xaxis->SetTickLabels($datax); 
$graph->xaxis->SetFont(FF_VERDANA,FS_NORMAL,12); 

// Some extra margin looks nicer 
$graph->xaxis->SetLabelMargin(10); 

// Label align for X-axis 
$graph->xaxis->SetLabelAlign('right','center'); 

// Add some grace to y-axis so the bars doesn't go 
// all the way to the end of the plot area 
$graph->yaxis->scale->SetGrace(20); 

// We don't want to display Y-axis 
$graph->yaxis->Hide(); 

// Now create a bar pot 
$bplot = new BarPlot($datay); 

$bplot->SetFillColor("#B0C4DE"); 
// ALSO tried: 
// $bplot->SetColor(array("red","green","blue","gray")); 
$bplot->SetShadow(); 

//You can change the width of the bars if you like 
//$bplot->SetWidth(0.5); 

// We want to display the value of each bar at the top 
$bplot->value->Show(); 
$bplot->value->SetFont(FF_ARIAL,FS_BOLD,12); 
$bplot->value->SetAlign('left','center'); 
$bplot->value->SetColor('black','darkred'); 
$bplot->value->SetFormat('%.1f mkr'); 

// Add the bar to the graph 
$graph->Add($bplot); 

// .. and stroke the graph 
$graph->Stroke(); 
?> 
+0

que tienen el mismo problema. No se tiene en cuenta nada relacionado con el formato de barra (valor, color, ...). pero está muy bien con los gráficos de línea –

Respuesta

18

he tenido el mismo problema, la solución I encontrado es definir el formato después de la inicialización de la clase barplot

$bplot = new BarPlot($datay); 
$graph->Add($bplot); 
$bplot->value->Show(); 
$bplot->value->SetFont(FF_ARIAL,FS_BOLD,12); 
$bplot->value->SetAlign('left','center'); 
$bplot->value->SetColor('black','darkred'); 
$bplot->value->SetFormat('%.1f mkr'); 

solución encontrada here

+0

Tuve el mismo problema con la clase LinePlot, esto parece resolverlo también para esa clase. – davidk

+0

¿Hay alguna manera de establecer el color no solo de valor sino también para la barra en sí misma? ¿Entonces las barras negativas tienen un color diferente al positivo? –

4

Esto es debido a la Add() usando la configuración predeterminada del tema. Hay dos soluciones

  1. Agregar trama antes de la configuración de la aplicación de
  2. Eliminar tema $graph->graph_theme = null; después $graph->SetScale() o ajuste el tema de

Fuente:/docs/chunkhtml/ch29.html - Part VII. Theme Class

Hace poco se clavaron en esto como mi leyenda tampoco se mostraba correctamente JpGraph: How to control x/y offset, margins and color in v3.5.0b1 when using AccBarPlot?

4

tengo el mismo problema, y ​​este es mi solución: sólo tiene que añadir "ClearTheme()", así:

 $graph = new Graph(310,200); 
    $graph->ClearTheme();  
Cuestiones relacionadas