Я пытаюсь сделать линейную диаграмму на основе данных временных рядов из mysql.Код выглядит так:
$chart2 = new TChart(1200,600);
$chart2->getAspect()->setView3D(false);
$chart2->getHeader()->setText("Line Chart 369874");
$chart2->getAxes()->getLeft()->setVisible(true);
$chart2->getAxes()->getLeft()->setMinimumOffset(10);
$chart2->getAxes()->getLeft()->setMaximumOffset(10);
$chart2->getAxes()->getLeft()->setIncrement(5);
$chart2->getAxes()->getLeft()->getTitle()->setText("Count 369");
$chart2->getAxes()->getLeft()->getAxisPen()->setVisible(false);
//$chart2->getAxes()->getBottom()->getLabels()->setDateTimeFormat('yyyy-mm-dd');
//$chart2->getAxes()->getBottom()->setIncrement(DateTimeStep::$ONEDAY);
//$chart2->getAxes()->getBottom()->setIncrement(1);
$lines=new Line($chart2->getChart());
$chart2->getSeries(0)->getXValues()->setDateTime(true);
...
$mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
if(!$mysqli){
die("Connection failed: " . $mysqli->error);
}
$result = $mysqli->query("SELECT date, (((nav/(SELECT nav FROM fund1 ORDER BY date LIMIT 1))-1)*100) AS zmiana FROM fund1");
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
$lines->addXY($row["date"], $row["zmiana"]);
}
$result->close();
$mysqli->close();
$chart2->getPanel()->getGradient()->setVisible(false);
$chart2->getPanel()->setColor(Color::fromRgb(230,235,225));
$chart2->getWalls()->getBack()->setTransparent(true);
$chart2->getHeader()->setAlignment(StringAlignment::$NEAR);
$chart2->getLegend()->setVisible(false);
$chart2->render("charts/chart2.png");
Данные в базе данных выглядят так:
date |nav
2007-10-17 |1000,00
2007-10-18 |1000,00
2007-10-19 |1000,00
2007-10-22 |1000,00
2007-10-23 |1000,00
2007-10-24 |1000,81
2007-10-25 |1000,81
2007-10-26 |1000,81
...
2018-10-23 |1646.52
К сожалению, данные на оси X (дата) отображаются странным образом, как на прилагаемом изображении:
Я безуспешно пробовал разные настройки setIncrement, setDateTimeFormat нижней оси.
Кто-нибудь сталкивался с подобной проблемой?