JpGraph: LinePlot->SetWeight не будет работать

Я использую JpGraph версии 3.5.0b1 для создания графиков для PDF-документа, и я столкнулся с проблемой, которая заняла половину моего дня, пытаясь понять, что происходит не так.

Все, что я хочу сделать, это изменить толщину линии моего линейного графика, но независимо от того, что я пытаюсь, по умолчанию всегда используется значение 1 (при условии, что 1 является значением по умолчанию).

Я провел свое исследование и знаю, что должен установить его после добавления в график, а также, что если для antialias установлено значение true, то SetWeight игнорируется. Мой код следует этим правилам и все же ничего. Я могу изменить цвет линии, так что я знаю, что это никак не связано с тем, как я вызываю методы.

Может кто-нибудь помочь мне здесь, пожалуйста? Я был бы чрезвычайно благодарен, поскольку это начинает раздражать меня только немного.

Во всяком случае, вот небольшой фрагмент моего кода:

$lineplot = new LinePlot($ydata, $xdata);
$graph->Add($lineplot);
$lineplot->SetColor("red");
$lineplot->SetWeight(2);

4 ответа

SetWeight() ничего не будет делать, пока вы не отключите сглаживание. JpGraph упоминает об этом в своем руководстве на странице использования сглаживания.

Я проверил это в версии 3.5.0b1, и необходимо сделать следующее:

// Ensure anti-aliasing is off. If it is not, you can SetWeight() all day and nothing will change.
$graph->img->SetAntiAliasing(false); 

// Create linear plot
$lineplot = new LinePlot($ydata, $xdata);

// Add plot to graph
$graph->Add($lineplot);

// Set line weight. This must be done AFTER adding the plot to the graph in version 3.5.0b1. I haven't verified this in other versions.
$lineplot->SetWeight(2); 

Я столкнулся с тем же, кажется, ошибка с 3.5, насколько я могу судить. Это даже игнорируется в примерах, распространяемых с 3.5.

Возврат к версии 3.0.7 работает для меня, поэтому попробуйте это, если вам не нужны какие-либо специфические для 3.5 функции.

У меня была похожая проблема, решенная с помощью $p1->SetStyle('solid') ПОСЛЕ добавления линейного графика к графику:

    $p1 = new LinePlot($min_values);
    $graph->Add($p1);
    $p1->SetWeight(3); 
    $p1->SetColor("blue");
    $p1->SetLegend("Minimum Values");
    $p1->SetStyle("solid");

Вот связанная ссылка, подтверждающая рекомендацию Шона разместить методы SetWeight и SetColor, вызывающая ПОСЛЕ вызова метода Add lineplot.

Для меня проблема в том, что моя зарегистрированная версия JpGraph 3.5.0b1, похоже, не работает вообще относительно веса линии, а также для других переключателей дисплея.

После перехода на версию 3.1.7p все работало нормально, независимо от переключателей сглаживания или расположения SetWeight после Add(),

Таким образом, в настоящий момент я могу только рекомендовать переход на версию не 3.5.0b1.

Другие вопросы по тегам