как синхронизировать 2 оси Y в Chart Director

У меня есть 2 массива для гистограммы. $pm а также $estimate,

Я вычисляю $percent = ($estimate / $pm) * 100 иметь массив для процента, чтобы создать мое значение для линейного графика.

Теперь вопрос заключается в том, как я могу синхронизировать свою ось 2 y на гистограмме и линейном графике.

Вот мой код

$transmonth = array(1, 2, 3);
$estimate = array(80, 50, 40);
$pm = array(10, 5, 8);

foreach($estimate as $k => $v){
$percent[$k] = ( $pm[$k] / $v) * 100;
}

$data = $percent;
$data1 = $estimate;
$data2 = $pm;
$labels = $transmonth;

$c = new XYChart(780, 400, -1,1);
$c->addTitle("Mini-PM Hit Rate");

# Set the plotarea at (80, 40) and of 650, 300 pixels in size. Use alternating light
# grey (f8f8f8) / white (ffffff) background. Set border to transparent and use grey
# (CCCCCC) dotted lines as horizontal and vertical grid lines

$c->setPlotArea(80, 80, 650, 250, 0xffffff, 0xf8f8f8,Transparent, $c->dashLineColor(0xcccccc, Dotline), $c->dashLineColor(0xcccccc, Dotline));

$legendObj = $c->addLegend(70, 50, false, "arial.ttf", 10);
$legendObj->setBackground(Transparent);

$lineLayer = $c->addLineLayer2();

$lineLayerObj = $lineLayer->addDataSet($data, 0x009966, "Hit Rate Percentage");
$lineLayerObj->setDataSymbol(CircleShape, 9, 0xff9966, 0x009966);
$lineLayerObj->setDataLabelFormat("{value|1}");
$lineLayerObj->setDataLabelStyle("arialbd.ttf", 8);

$lineLayer->setLineWidth(2);
$lineLayer->setUseYAxis2();
$c->yAxis2->setLinearScale(0, 120, 10);

$layer = $c->addBarLayer2(Side);
$layer->addDataSet($data1, 0x10b4f1, "Estimated PM");
$layer->addDataSet($data2, 0x7B3BA3, "Actual PM");
$layer->setBorderColor(Transparent);
$layer->setBarGap(0.2, TouchBar);$c->xAxis->setLabels($labels);
$c->xAxis->setTickOffset(0.5);

$c->xAxis->setTitle("Period");
$c->yAxis->setTitle("Total Handlers");
$c->yAxis2->setTitle("Hit Rate Percentage (%)");

header("Content-type: image/png");
print($c->makeChart2(PNG));

Пожалуйста помоги.

0

Решение

Согласно вашему коду, процент может быть намного выше, чем 100%. Тем не менее, в вашем коде есть строка, которая настраивает yAxis2 только от 0 до 120. Поэтому возможно, что процентные данные могут выходить за пределы диапазона оси. Если вы удалите эту строку кода и дайте ChartDirector
автоматически определить масштаб оси Y для yAxis2, масштаб будет таким, что весь
линия попадет в график.

0

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

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

По вопросам рекламы [email protected]