public function toString() { $typeString = GoogleChartAxisType::getParamName() . '='; $rangeString = GoogleChartDataRange::getParamName() . '='; $labelsString = null; $types = $ranges = $labels = array(); $i = 0; foreach ($this->axes as $axis) { $types[] = $axis->getType()->toString(); if ($range = $axis->getRange()) { $ranges[$i] = $i . ',' . $range->getMin() . ',' . $range->getMax(); } if ($interval = $axis->getInterval()) { $ranges[$i] .= ',' . $interval; } if ($label = $axis->getLabel()) { $labels[$i] = $label; } $i++; } $typeString .= implode(',', $types); $rangeString .= implode('|', $ranges); if ($labels) { $labelsString = '&' . GoogleChartAxisLabel::getParamName() . '='; foreach ($labels as $index => $label) { $labelsString .= $index . ':|' . $label->toString(); } } return $typeString . '&' . $rangeString . $labelsString; }
public function testGridedLineChart() { $views = GoogleChartDataSet::create()->setData(array(0, 0, 20, 2491, 2334, 0)); $clicks = GoogleChartDataSet::create()->setData(array(0, 0, 10, 480, 530, 0)); $days = array(2.03, 9.029999999999999, 16.03, 23.03, 30.03, 6.04); // calc base (thanks Igor V. Gulyaev) $views->setBase(pow(10, floor(log10($views->getMax())))); $clicks->setBase(pow(10, floor(log10($clicks->getMax())))); $viewAxis = GoogleChartAxis::create(new GoogleChartAxisType(GoogleChartAxisType::Y))->setRange($views->getMinMax())->setInterval($views->getBase()); $clickAxis = GoogleChartAxis::create(new GoogleChartAxisType(GoogleChartAxisType::R))->setRange($clicks->getMinMax())->setInterval($clicks->getBase()); $chart = GoogleGridedLineChart::create()->setSize(GoogleChartSize::create()->setWidth(640)->setHeight(240))->addAxis($viewAxis)->addAxis($clickAxis)->addAxis(GoogleChartAxis::create(new GoogleChartAxisType(GoogleChartAxisType::X))->setLabel(GoogleChartAxisLabel::create()->setLabels($days)))->addLine(GoogleChartLine::create()->setTitle('Показы')->setColor(Color::create('6699cc'))->setValue($views)->setStyle(ChartLineStyle::create()->setThickness(2)))->addLine(GoogleChartLine::create()->setTitle('Клики')->setColor(Color::create('339922'))->setValue($clicks)->setStyle(ChartLineStyle::create()->setThickness(2))); $this->assertEquals($chart->toString(), 'http://chart.apis.google.com/chart?cht=lc&chs=640x240&chco=6699CC,339922&chd=t:0,0,20,2491,2334,0|0,0,10,480,530,0&chds=0,6000,0,600&chdl=Показы|Клики&chdlp=b&chxt=y,r,x&chxr=0,0,6000,1000|1,0,600,100&chxl=2:|2.03|9.03|16.03|23.03|30.03|6.04&chls=2,1,0|2,1,0&chg=20,16.7,0'); $chart->setGrid(GoogleChartGrid::create()->setVerticalStepSize(10)); $this->assertEquals($chart->toString(), 'http://chart.apis.google.com/chart?cht=lc&chs=640x240&chco=6699CC,339922&chd=t:0,0,20,2491,2334,0|0,0,10,480,530,0&chds=0,6000,0,600&chdl=Показы|Клики&chdlp=b&chxt=y,r,x&chxr=0,0,6000,1000|1,0,600,100&chxl=2:|2.03|9.03|16.03|23.03|30.03|6.04&chls=2,1,0|2,1,0&chg=0,10,0'); }