JPGraph нижнее поле с включенной / выключенной легендой - PullRequest
2 голосов
/ 26 июля 2011

У меня проблема с библиотекой PHP Graphing на JPGraph.net. У меня очень простая LinePlot (), и если я добавляю легенду к графику, нижний край графика расширяется примерно на 10 пикселей. Создание легенды графика Show () или Hide () не имеет никакого значения, нижнее поле добавляется к графику сразу после связывания легенды с линейным графиком.

Есть ли решение, чтобы отключить это поведение? Поскольку я генерирую графики размера миниатюр (например, 180x100), белая область нижнего поля довольно «большая».

Для лучшего понимания:

Слева: отправная точка до добавления легенды

Справа: после добавления легенды другие изменения в полях / коде графика отсутствуют

К сожалению, у меня недостаточно репутации для публикации изображений: (* ​​1011 *

left_good right_bad

Ответы [ 4 ]

13 голосов
/ 28 февраля 2012

Решением этой проблемы является добавление:

$ graph-> graph_theme = null;

непосредственно перед:

$ graph-> Stroke ();

Удачи!

0 голосов
/ 26 июля 2011

Я могу согласиться с Бьорном в том, что $ graph-> SetMargin (lMargin, rMargin, tMargin, bMargin); это путь Тем не менее, на моем линейном графике настройка нижнего поля не оказывает никакого влияния. В курсе есть нижний колонтитул, и, как гласит легенда, заполнение этого или нет - также не влияет на нижнее поле. Если вы наткнетесь на что-то подобное, я был бы очень рад узнать, как вы это решаете.

Удачи, C

0 голосов
/ 02 декабря 2011

Это поле установлено в jpgraph_legend.inc.php в строке 35.

private $ybottom_margin = 8;

Это значение нельзя изменить методом, это жестко заданное поле, которое вы можете изменить только там.

Но вы можете добавить новый метод в класс легенды:

function SetYBottomMargin($aYMarg) {
    $this->ybottom_margin = $aYMarg;
}

Назовите это как $ graph-> legend-> SetYBottomMargin (0); , чтобы установить нижнее поле равным 0.

0 голосов
/ 26 июля 2011

Имейте в виду, что легенда более или менее независима от самого графика, ее можно разместить где угодно.

Поле самого графа - в большинстве случаев - можно изменить, используя ...

Graph::SetMargin($left_m, $right_m, $top_m, $bottom_m)

... (поле в пикселях), которое может выглядеть следующим образом в вашем коде:

$graph = new Graph(180,100);    
$graph->SetMargin(10,20,30,40);

/* followed by alot more code for your graph until... */
$graph->Stroke();

Я советую изучить обширную документацию, которая включена в пакеты JPGraph, классы хорошо документированы, и они предлагают множество примеров, как с ним работать.

...