Я пытался использовать Teechart, чтобы нарисовать пару графиков для проекта. Мне удалось нарисовать графики просто отлично. То, с чем я бьюсь, это комментирование определенных точек на графике с помощью некоторых меток.
Конкретная проблема заключается в том, что когда я использую $ chart1-> CalcXPos (someIndex); он всегда возвращает 0 вместо значения пикселей. Как я могу решить эту проблему?
$chart1 = new TChart(640,480);
$varname = new Line($chart1->getChart());
$someYValues = array(2,3,5,7,11,13);
$theXValues = array(-3,-1,1,3,4,5);
$i=0;
foreach($someYValues as $x){
$varname->addXY($theXValues[$i],$someYValues[$i]);
$i++;
}
$varname->Setcolor(Color::BLUE());
$chart1->getAxes()->getBottom()->getTitle()->setText("X-axis label (units)");
$chart1->getAxes()->getLeft()->getTitle()->setText("Y-axis label (units)");
$tool=new Annotation($chart1->getChart());
$tool->getShape()->setCustomPosition(true);
//$chart1->paint;
$xvalue = $chart1->getAxes()->getBottom()->CalcXPosValue($theXValues[2]);
$yvalue = $chart1->getAxes()->getLeft()->CalcYPosValue($someYValues[2]);
//$xvalue = $varname->CalcXPosValue($theXValues[2]);
//$yvalue = $varname->CalcYPosValue($someYValues[2]);
echo $xvalue;
echo $yvalue;
$tool->setTop($xvalue);
$tool->setLeft($yvalue);
$tool->setText("Random Text ");
$chart1->render("ecg.png");
Попробуйте принудительно перерисовать диаграмму перед использованием Calc*
функции:
$chart1->doInvalidate();
Других решений пока нет …