This feature was added in v3.1.1p
In the same was as most other plot types matrix plots also supports the usage of Client Side Image Maps. (See Chapter 10 for a full description on the usage of CSIM in general the library.)
The possible hotspot areas in a matrix graph are:
The title
This is set (as usual with a call to)
MatrixGraph::title::SetCSIM()
Each cell in the matrix itself.
This is set with a call to MatrixPlot::SetCSIM()
The input is
specified with a matrix of the same size as the input data. An error message
will be given if the sizes differ.
Each row and column label text. The input must be an array of the same length as the number of labels.
This is specified with either (or both)
MatrixGraph::rowlabel::SetCSIM()
MatrixGraph::collabel::SetCSIM()
The following example shows how to add both label and data CSIM. As usual the graph
must be stroked with a call to MatrixGraph::StrokeCSIM()
when using CSIM
functionality.
Example 22.5. Matrix example with CSIM (matrix_csimex01.php
)
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 | // content="text/plain; charset=utf-8" require_once('jpgraph/jpgraph.php'); require_once('jpgraph/jpgraph_matrix.php'); $data = array( array(0,null,2,3,4,5,6,7,8,9,10,8,6,4,2), array(10,9,8,7,6,5,4,3,2,1,0,8,5,9,2), array(0,1,2,3,4,5,6,7,8,9,10,2,4,5,7), array(10,9,8,17,6,5,4,3,2,1,0,8,6,4,2), array(0,1,2,3,4,4,9,7,8,9,10,3,2,7,2), array(8,1,2,3,4,8,3,7,8,9,10,5,3,9,1), array(10,3,5,7,6,5,4,3,12,1,0,6,5,10,2), array(10,9,8,7,6,5,4,3,2,1,NULL,8,6,4,2), ); $nx = count($data[0]); $ny = count($data); for( $i=0; $i < $ny; ++$i ) { for( $j=0; $j < $nx; ++$j ) { $csimtargets[$i][$j] = '#'.sprintf('%02sd',$i)."-".sprintf('%02sd',$j); } } for($i=0; $i < $nx; ++$i ) { $collabels[$i] = sprintf('column label: %02d',$i); $collabeltargets[$i] = '#'.sprintf('collabel: %02d',$i); } for($i=0; $i < $ny; ++$i ) { $rowlabels[$i] = sprintf('row label: %02d',$i); $rowlabeltargets[$i] = '#'.sprintf('rowlabel: %02d',$i); } // Setup a nasic matrix graph $graph = new MatrixGraph(400,350); $graph->SetBackgroundGradient('lightsteelblue:0.8','lightsteelblue:0.3'); $graph->title->Set('CSIM with matrix'); $graph->title->SetFont(FF_ARIAL,FS_BOLD,16); $graph->title->SetColor('white'); // Create one matrix plot $mp = new MatrixPlot($data,1); $mp->SetModuleSize(13,15); $mp->SetCenterPos(0.35,0.6); $mp->colormap->SetNullColor('gray'); // Setup column lablels $mp->collabel->Set($collabels); $mp->collabel->SetSide('top'); $mp->collabel->SetFont(FF_ARIAL,FS_NORMAL,8); $mp->collabel->SetFontColor('lightgray'); // Setup row lablels $mp->rowlabel->Set($rowlabels); $mp->rowlabel->SetSide('right'); $mp->rowlabel->SetFont(FF_ARIAL,FS_NORMAL,8); $mp->rowlabel->SetFontColor('lightgray'); $mp->rowlabel->SetCSIMTargets($rowlabeltargets); $mp->collabel->SetCSIMTargets($collabeltargets); // Move the legend more to the right $mp->legend->SetMargin(90); $mp->legend->SetColor('white'); $mp->legend->SetFont(FF_VERDANA,FS_BOLD,10); $mp->SetCSIMTargets($csimtargets); $graph->Add($mp); $graph->StrokeCSIM(); |