/**
  * This function needs to do some funky stuffs with the data series, because
  * the chd parameter of scatter charts work quite differently.
  * chd=<x_values>|<y_values>[|<optional_point_sizes>]
  *
  * So basically each point must be split into 3 values, placed on 3 GoogleChartData objects.
  */
 protected function compute(array &$q)
 {
     $old_data = $this->data;
     $colors = array();
     // rebuild a set of 3 GoogleChartData
     $series_x = array();
     $series_y = array();
     $series_size = array();
     $legends = array();
     foreach ($this->data as $i => $data) {
         $colors[] = $data->computeChco();
         $legends[] = $data->getLegend();
         $data_x = array();
         $data_y = array();
         $data_size = array();
         foreach ($data->getValues() as $d) {
             $data_x[] = $d[0];
             $data_y[] = $d[1];
             $data_size[] = isset($d[2]) ? $d[2] : 10;
         }
         $series_x[] = $data_x;
         $series_y[] = $data_y;
         $series_size[] = $data_size;
     }
     $series_x = self::interlace($series_x);
     $series_y = self::interlace($series_y);
     $series_size = self::interlace($series_size);
     $series_x = new GoogleChartData($series_x);
     $series_y = new GoogleChartData($series_y);
     $series_size = new GoogleChartData($series_size);
     $this->data = array($series_x, $series_y, $series_size);
     $this->setAutoScale(false);
     // rebuild the legends
     $series_x->setLegends($legends);
     // compute
     parent::compute($q);
     unset($q['chds']);
     // DEBUG
     $this->chco = implode('|', $colors);
     $this->data = $old_data;
 }
Ejemplo n.º 2
0
<?php

require '../lib/GoogleVennDiagram.php';
//~ $chart = new GoogleVennDiagram(300, 150);
//~ $data = new GoogleChartData(array(10,10));
//~ $data->setColor(array('FF0000', '00FF00'));
//~ $data->setLegends(array('A','B'));
//~ $chart->addData($data);
//~ $chart->setIntersectAB(1);
//~ var_dump($chart->getQuery());
//~ printf('<iframe src="%s" width="500" height="500"></iframe>',$chart->getValidationUrl());
//~ echo $chart->toHtml();
//~ unset($chart);
$chart = new GoogleVennDiagram(300, 150);
$data = new GoogleChartData(array(10, 20, 30));
$data->setColor(array('FF0000', '00FF00', '0000FF'));
$data->setLegends(array('A', 'B', 'C'));
$data->setLabels(array('A', 'B', 'C'));
$chart->addData($data);
$chart->setIntersectAB(1);
$chart->setIntersectAC(2);
$chart->setIntersectBC(3);
var_dump($chart->getQuery());
printf('<iframe src="%s" width="500" height="500"></iframe>', $chart->getValidationUrl());
echo $chart->toHtml();
//~ echo $chart;