Работа с TeeChart DateTime на XAxis

У меня есть запрос Oracle, который возвращает строку даты в формате Y-m-d H: i: s, и мне нужно передать их Series::AddXY method, Как я могу это сделать?

0

Решение

Пример «CandleChart.php» в демонстрационной версии «Особенности», поставляемой с продуктом, использует DateTimes по горизонтальной оси.
Вот вариант:

<?php
//Includes
include "../../../../sources/TChart.php";

$chart1 = new TChart(600,450);
$chart1->getChart()->getHeader()->setText("Candle Style");
$chart1->getChart()->getAspect()->setView3D(false);
// Clip Series points
$chart1->getChart()->getAspect()->setClipPoints(true);
$chart1->getChart()->getLegend()->setVisible(false);

// Add Candle data using doubles for date values
$today = time();
$day = 86400;
$hour = 3600;

$chart1->getAxes()->getBottom()->setIncrement(DateTimeStep::$ONEMINUTE);
$chart1->getAxes()->getBottom()->getLabels()->setDateTimeFormat('d/m/Y H:i:s');
$chart1->getAxes()->getBottom()->getLabels()->setAngle(90);
$candle=new Candle($chart1->getChart());

$chart1->setAutoRepaint(false);
for ($i=$today;$i<($today+$hour);$i+=60) {
$candle->addCandle($i,rand(0,100),rand(0,100),rand(0,100),rand(0,100));
}
$chart1->setAutoRepaint(true);
$chart1->doInvalidate();

$chart1->render("chart1.png");
$rand=rand();
print '<font face="Verdana" size="2">Candle Chart Style<p>';
print '<img src="chart1.png?rand='.$rand.'">';
?>
1

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

Проблема в том, что у меня нет постоянных временных интервалов, и я не могу использовать «машину времени», как в примере с Candle.

Время (значение X), которое я получил, приходит из запроса Oracle:

  $query = "SELECT ptm.IDENTIFICACAO,
mtr.SERIAL,
TO_CHAR(rtu.DATAHORA, 'yyyy-mm-dd hh24:mi:ss') AS DATAHORA,

Таким образом, значение DateTime представляет собой строку в формате даты PHP: Y-m-d H: i: s, которую мне нужно преобразовать в значения TChart. Я не знаю, если я полностью прав, но это
Кажется, что значения DateTime следует вводить как значения с плавающей запятой (Unix Timestamp)

Поэтому я конвертирую их следующим образом:

    while( ($row = oci_fetch_array($stmt, OCI_ASSOC)) != false ){
$thetime = DateTime::createFromFormat('Y-m-d H:i:s', $row["DATAHORA"]);if($thetime)
$tchart->getChart()->getSeries(0)->addXY((float) $thetime->getTimestamp() , $row["ENERTOT"] / 1000);
}
++$rowCount;
}

Я надеюсь, что это может помочь кому-то еще.

С наилучшими пожеланиями.

0

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