Blame view

site/jpgraph/Examples/barlinefreq_csimex1.php 2.66 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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
  <?php // content="text/plain; charset=utf-8"
  //
  // Example of CSIM frequence bar that uses the cache
  //
  require_once ('jpgraph/jpgraph.php');
  require_once ('jpgraph/jpgraph_bar.php');
  require_once ('jpgraph/jpgraph_line.php');
  
  
  // Utility function to calculate the accumulated frequence
  // for a set of values and ocurrences
  function accfreq($data) {
      rsort($data);
      $s = array_sum($data);
      $as = array($data[0]);
      $asp = array(100*$as[0]/$s);
      $n = count($data);
      for( $i=1; $i < $n; ++$i ) {
  	$as[$i] = $as[$i-1]+$data[$i];
  	$asp[$i] = 100.0*$as[$i]/$s;
      }
      return $asp;
  }
  
  // some data
  $data_freq = array(22,20,12,10,5,4,2);
  $data_accfreq = accfreq($data_freq);
  
  // Create the graph. 
  $graph = new Graph(350,250);
  
  // We need to make this extra call for CSIM scripts
  // that make use of the cache. If the cache contains this
  // graph the HTML wrapper will be returned and then the
  // method will call exit() and hence NO LINES AFTER THIS 
  // CALL WILL BE EXECUTED.
  // $graph->CheckCSIMCache('auto');
  
  // Setup some basic graph parameters
  $graph->SetScale("textlin");
  $graph->SetY2Scale('lin',0,100);
  $graph->img->SetMargin(50,70,30,40);
  $graph->yaxis->SetTitleMargin(30);
  $graph->SetMarginColor('#EEEEEE');
  
  // Setup titles and fonts
  $graph->title->Set("Frequence plot");
  $graph->xaxis->title->Set("X-title");
  $graph->yaxis->title->Set("Y-title");
  
  $graph->title->SetFont(FF_FONT1,FS_BOLD);
  $graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
  $graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
  
  // Turn the tickmarks
  $graph->xaxis->SetTickSide(SIDE_DOWN);
  $graph->yaxis->SetTickSide(SIDE_LEFT);
  
  $graph->y2axis->SetTickSide(SIDE_RIGHT);
  $graph->y2axis->SetColor('black','blue');
  $graph->y2axis->SetLabelFormat('%3d.0%%');
  
  // Create a bar pot
  $bplot = new BarPlot($data_freq);
  
  // Create targets and alt texts for the image maps. One for each bar
  // (In this example this is just "dummy" targets)
  $targ=array("#1","#2","#3","#4","#5","#6","#7");
  $alts=array("val=%d","val=%d","val=%d","val=%d","val=%d","val=%d","val=%d");
  $bplot->SetCSIMTargets($targ,$alts);
  
  
  // Create accumulative graph
  $lplot = new LinePlot($data_accfreq);
  
  // We want the line plot data point in the middle of the bars
  $lplot->SetBarCenter();
  
  // Use transperancy
  $lplot->SetFillColor('lightblue@0.6');
  $lplot->SetColor('blue@0.6');
  //$lplot->SetColor('blue');
  $graph->AddY2($lplot);
  
  
  // Setup the bars
  $bplot->SetFillColor("orange@0.2");
  $bplot->SetValuePos('center');
  $bplot->value->SetFormat("%d");
  $bplot->value->SetFont(FF_ARIAL,FS_NORMAL,9);
  $bplot->value->Show();
  
  // Add it to the graph
  $graph->Add($bplot);
  
  // Send back the HTML page which will call this script again
  // to retrieve the image.
  $graph->StrokeCSIM();
  
  ?>