Консультация № 196828
26.10.2019, 20:02
0.00 руб.
0 2 1
Здравствуйте! Прошу помощи в следующем вопросе:
Вопрос по JpGraph
Ниже привел простенький код, который выводит на графике 2 линии из массивов data1 и data2
Дело в том что JpGraph при выводе линии рассчитывает ее максимум и минимум и встраивает в окно.
Нет ли в этой библиотеке возможности задать свой максимум на оси Y относительно которого строились бы графики.
Например вывести эти линии при верхнем значении по оси Y равным 500.



Приложение:
<?php

require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_bar.php');

$data1=array(-8,8,9,3,5,6);
$data2=array(18,2,1,7,50,402);

// Create the graph. These two calls are always required
$graph = new Graph(500,400);
$graph->SetScale("textlin");

$graph->SetShadow();
$graph->img->SetMargin(40,30,20,40);

// Create the

$p1 = new LinePlot($data1);
$p1->SetColor("black");

$p2 = new LinePlot($data2);
$p2->SetColor("forestgreen");


$graph->Add($p1);

// Display the graph
$graph->Stroke();

?>

Обсуждение

давно
Старший Модератор
312929
1973
31.10.2019, 13:57
общий
это ответ
Здравствуйте, bars.66!

Такая возможность есть. Например, если необходимо задать для оси Y пределы значений от 0 до 500, то вместо
[code lang=php]$graph->SetScale("textlin");[/code]
используйте
[code lang=php]$graph->SetScale("textlin", 0, 500);
$graph->yscale->SetAutoTicks();[/code]
Если также необходимо задать для оси X пределы от -10 до 10, то код должен выглядеть так:
[code lang=php]$graph->SetScale("textlin", 0, 500, -10, 10);
$graph->xscale->SetAutoTicks();
$graph->yscale->SetAutoTicks();[/code]
То есть функция SetScale в общем случае имеет формат SetScale($aAxisType, $aYMin, $aYMax, $aXMin, $aXMax), где $aAxisType - тип оси (линейная, логарифмическая и т.п.), $aYMin и $aYMax - пределы по Y, $aXMin и $aXMax - пределы по X. Если какой-то из пределов не указан, он по умолчанию считается равным 1.
Если для какой-то из осей заданы пределы, необходимо также вызвать для неё функцию SetAutoTicks - это гарантирует правильную разметку оси. Если нужно установить разметку по-своему, например, длинные деления через 100 и короткие через 20 для оси Y, то вместо SetAutoTicks используйте Set:
[code lang=php]$graph->SetScale("textlin", 0, 500);
$graph->yscale->ticks->Set(100, 20);[/code]
5
давно
Посетитель
399473
9
31.10.2019, 17:57
общий
31.10.2019, 19:24
Большое спасибо!

А оказывается можно еще вот так:

$graph->SetYScale(0,'lin');
$graph->SetYScale(1,'lin');

сделаем например вот так:

$graph->SetYScale(0,'lin',-100,1000);
$graph->SetYScale(1,'lin',-100,1000);
Форма ответа