Как заполнить пространство между линиями сетки несколькими цветами в JpGraph?

Поэтому чередовать два цвета между линиями сетки с помощью функции SetFill достаточно просто, однако мне нужно 7 разных цветов в моем линейном графике.

$graph->ygrid->SetFill(true,'red','blue', [5 more colours etc] );

На данный момент я безуспешно пытался добавить дополнительные параметры в функцию SetFill в jpgrapgh.php. Смотрите пример кода ниже:

function SetFill($aFlg=true,$aColor1='lightgray',$aColor2='lightblue',$aColor3='darkblue') {

$this->fill = $aFlg;
$this->fillcolor = array( $aColor1, $aColor2, $aColor3);
}

Я подозреваю, что больше сценариев нуждается в обновлении, чтобы обслужить это изменение?

0

Решение

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

$graph->ygrid->SetFill(true,'red','orange','orange','green','orange','orange','red');

Обновите функцию SetFill следующим образом:

function SetFill($aFlg=true,$aColor1='lightgray',$aColor2='lightblue',$aColor3=null,$aColor4=null,$aColor5=null,$aColor6=null,$aColor7=null) {
$this->fill = $aFlg;
$this->fillcolor = array( $aColor1, $aColor2, $aColor3, $aColor4, $aColor5, $aColor6, $aColor7 );
$this->fillcolor = array_filter($this->fillcolor);
}

А в обновлении функции DoStroke:

            // If we have passed in 7 colours
if(count($this->fillcolor)==7) {

// Loop out all 7 the colours
while ($i < $nbrgrids) {
$this->img->SetColor($this->fillcolor[$i - 1]); // Offset by 1 because array keys start at 0
$y1 = $y2;
$y2 = $aTicksPos[$i++];
$this->img->FilledRectangle($xl, $y1, $xr, $y2);
}

} else {

// Otherwise, do the normal alternation loop
while ($i < $nbrgrids) {
$y1 = $y2;
$y2 = $aTicksPos[$i++];
$this->img->SetColor($this->fillcolor[$i & 1]);
$this->img->FilledRectangle($xl, $y1, $xr, $y2);
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector