Использование pChart для построения графиков:
$Data = new pData();
$Data->AddPoints(array(1,2,10), 'x');
$Data->AddPoints(array(6,8,3), 'y');
$Data->setAbscissa('x');
$Chart = new pImage($w, $h, $Data);
$Chart->setGraphArea(100, 0, $w-1, $h-50);
$Chart->drawScale(array('Mode' => SCALE_MODE_FLOATING));
$Chart->drawPlotChart();
$Chart->Stroke();
На графике расстояние по оси X от 1 до 2 равно расстоянию от 2 до 10. Как заставить pChart интерпретировать значения абсцисс как числа, которыми они являются?
Я просмотрел код pChart и почти уверен, что это их единственный способ рендеринга данных: тики по оси X распределены равномерно, количество тиков равно количеству точек данных в серии.
Но вы все равно можете получить то, что хотите, определив некоторые точки как отсутствующие. В случае вашего конкретного примера «фиксированный» код будет выглядеть так (остальное без изменений):
$Data->AddPoints(array(1,2,VOID,VOID,VOID,VOID,VOID,VOID,VOID,10), 'x');
$Data->AddPoints(array(6,8,VOID,VOID,VOID,VOID,VOID,VOID,VOID,3), 'y');
VOID
— это константа, определенная где-то внутри pData.class.php
, так что она у вас уже есть.
А вот как выглядит конечный результат: https://imgur.com/a/Ae0nj0G ($w = 500; $h = 400;
)
график рассеяния - это то, что я ищу. Это рисует правильный график XY:
$Data = new pData();
$Data->AddPoints(array(1,2,10), 'x');
$Data->AddPoints(array(6,8,3), 'y');
$Data->setAxisXY(0,AXIS_X);
$Data->setAxisPosition(0, AXIS_POSITION_BOTTOM);
$Data->setAxisXY(1,AXIS_Y);
$Data->setSerieOnAxis('y', 1);
$Data->SetScatterSerie('x', 'y');
$Chart = new pImage($w, $h, $Data);
$Chart->setGraphArea(100,0,$w-1,$h-50);
$Scatter = new pScatter($Chart, $Data);
$Scatter->drawScatterScale();
$Scatter->drawScatterPlotChart(array());
$Chart->Stroke();
Почти дубликат: stackoverflow.com/questions/33208323/…