Blame view

site/jpgraph/Examples/balloonex2.php 2.17 KB
8ec98c9f   Guillaume   MAJ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
  <?php // content="text/plain; charset=utf-8"
  require_once ('jpgraph/jpgraph.php');
  require_once ('jpgraph/jpgraph_scatter.php');
  
  // Each ballon is specificed by four values.
  // (X,Y,Size,Color)
  $data = array(
      array(1,12,10,'orange'),
      array(3,41,15,'red'),
      array(4,5,19,'lightblue'),
      array(5,70,22,'yellow')
  );
  
  
  
  // We need to create X,Y data vectors suitable for the
  // library from the above raw data.
  $n = count($data);
  for( $i=0; $i < $n; ++$i ) {
  
      $datax[$i] = $data[$i][0];
      $datay[$i] = $data[$i][1];
  
      // Create a faster lookup array so we don't have to search
      // for the correct values in the callback function
      $format[strval($datax[$i])][strval($datay[$i])] = array($data[$i][2],$data[$i][3]);
  
  }
  
  
  // Callback for markers
  // Must return array(width,border_color,fill_color,filename,imgscale)
  // If any of the returned values are '' then the
  // default value for that parameter will be used (possible empty)
  function FCallback($aYVal,$aXVal) {
      global $format;
      return array($format[strval($aXVal)][strval($aYVal)][0],'',
  		 $format[strval($aXVal)][strval($aYVal)][1],'','');
  }
  
  // Setup a basic graph
  $graph = new Graph(450,300,'auto');
  $graph->clearTheme();
  $graph->SetScale("intlin");
  $graph->SetMargin(40,40,40,40);
  $graph->SetMarginColor('wheat');
  
  $graph->title->Set("Example of ballon scatter plot with X,Y callback");
  $graph->title->SetFont(FF_ARIAL,FS_BOLD,12);
  $graph->title->SetMargin(10);
  
  // Use a lot of grace to get large scales since the ballon have
  // size and we don't want them to collide with the X-axis
  $graph->yaxis->scale->SetGrace(50,10);
  $graph->xaxis->scale->SetGrace(50,10);
  
  // Make sure X-axis as at the bottom of the graph and not at the default Y=0
  $graph->xaxis->SetPos('min');
  
  // Set X-scale to start at 0
  $graph->xscale->SetAutoMin(0);
  
  // Create the scatter plot
  $sp1 = new ScatterPlot($datay,$datax);
  $sp1->mark->SetType(MARK_FILLEDCIRCLE);
  
  // Uncomment the following two lines to display the values
  $sp1->value->Show();
  $sp1->value->SetFont(FF_FONT1,FS_BOLD);
  
  // Specify the callback
  $sp1->mark->SetCallbackYX("FCallback");
  
  // Add the scatter plot to the graph
  $graph->Add($sp1);
  
  // ... and send to browser
  $graph->Stroke();
  
  ?>