JPGraph — гистограммы не отображают значения

Я использую последнюю версию JPGraph и пытаюсь изменить файл graph_api, чтобы отображать значения на гистограммах группы. Вот фрагмент кода, показывающий мои изменения (для тех, кто смотрит на API, это в функции graph_group):

$tot = new BarPlot( array_values( $total ) );
$tot->value->show();
$tot->value->SetFormat('%2d');
$tot->value->SetColor('black','black');
$tot->value->SetFont($t_graph_font,FS_BOLD,9);
$tot->SetFillColor('lightblue');
$tot->SetWidth(0.7);
$tot->SetLegend( lang_get( 'legend_total' ) );
$graph->Add($tot);

$p1 = new BarPlot( array_values( $p_metrics['open'] ) );
$p1->SetFillColor( 'yellow' );
$p1->SetWidth( 1 );
$p1->SetLegend( plugin_lang_get( 'legend_opened' ) );
$p1->value->show();
$p1->value->SetColor('white','white');
$p1->value->SetFormat('%2d');
$p1->value->SetFont($t_graph_font,FS_BOLD,8);
$p1->SetFillColor('red');
$p1->SetLegend( lang_get( 'legend_still_open' ) );

$p2 = new BarPlot( array_values( $p_metrics['closed'] ) );
$p2->SetFillColor( 'blue' );
$p2->SetWidth( 1 );
$p2->SetLegend( plugin_lang_get( 'legend_closed' ) );
$p2->value->show();
$p2->value->SetFormat('%2d');
$p2->value->SetColor('black','black');
$p2->SetFillColor('forestgreen');
$p2->SetWidth(0.5);
$p2->SetLegend( lang_get( 'legend_closed' ) );

$gbplot = new GroupBarPlot( array( $p1, $p2 ) );
$gbplot->value->show();

$graph->Add( $gbplot );

Согласно API, использование «value->show()» должно отображать значения. Когда я добавляю последнюю строку (для $gbplot), график не отображается. Если я закомментирую это, график будет отображаться без значений. Что мне не хватает?


person LNendza    schedule 17.12.2013    source источник
comment
Разве вам не нужно добавлять гистограммы (или GroupBarPlot) к вашему графику, используя $graph->Add()?   -  person Felipe    schedule 17.12.2013
comment
Извините, я не так далеко написал. Добавляю на график. Я обновляю фрагмент, чтобы учесть это.   -  person LNendza    schedule 17.12.2013


Ответы (2)


По-видимому, проблема связана с тем фактом, что JPGraph не позволяет вам перезаписывать свою тему по умолчанию. Я обнаружил, что установка темы на ноль позволила мне внести более обширные изменения. Имхо, это довольно глупая установка, но c'est la vie. Вот как теперь выглядит мое определение графика:

$graph = new Graph( $p_graph_width, $p_graph_height );
$graph->SetScale('textlin');
$graph->graph_theme = null;
$graph->SetFrame(false);

Строка «graph_theme» — это новое добавление, которое решило проблему для меня. Я надеюсь, что это поможет другим в будущем, поскольку это явно не указано в их API.

person LNendza    schedule 18.12.2013

причина здесь: // методы изменения дизайна каждого графика должны использоваться после метода $graph->add($plot). // Это действительно противоречит здравому смыслу. Но это работает!!

$graph->Add($bplot);
$bplot->value->show();

// благодаря: http://webdeveloperoddities.blogspot.com/2010/10/jpgraph-cannot-change-line-colour-or.html

person stack    schedule 09.05.2020