Version 2.22 is another small SVGGraph update, this time improving the way
that the legend works. The bulk of the legend code has been moved out of the
main class into a new
SVGGraphLegend.php file which is only loaded
if you are using a legend. Here's an example bar and line graph:
This graph is using
legend_entries to set an entry for each
dataset, but it is also using the new
legend_text option for
structured data, adding an entry to the legend for the red marker in the
“Jul 2016” position. The data and relevant options are shown in
the code snippets below.
$settings = array( 'structure' => array( 'key' => 0, 'value' => array(1, 2), 'colour' => array(null, 3), 'marker_stroke_colour' => array(null, 4), 'legend_text' => array(null, 5), 'axis_text' => 'axis', ), 'legend_entries' => array( 'Marketing', 'Sales' ), 'legend_position' => 'bottom right -5 -5', );
I've only included the legend-related options in this code extract, there are quite a few more options used to achieve the graph at the top of the page.
$values = array( array(0, 1500, 90, 'axis' => 'Jan 2016'), array(1, 1550, 76, 'axis' => 'Feb 2016'), array(2, 1530, 65, 'axis' => 'Mar 2016'), array(3, 1580, 57, 'axis' => 'Apr 2016'), array(4, 1300, 59, 'axis' => 'May 2016'), array(5, 1220, 55, 'axis' => 'Jun 2016'), array(6, 2500, 98, '#f00', '#fc3', 'New market!', 'axis' => 'Jul 2016'), array(7, 2300, 80, 'axis' => 'Aug 2016'), array(8, 2350, 97, 'axis' => 'Sep 2016'), array(9, 2280, 85, 'axis' => 'Oct 2016'), );
You can continue to use
legend_entries by itself, or you can use
legend_text by itself instead. There is another new
option in this version,
show_legend, which you can use to turn the
legend on or off. It defaults to TRUE for backwards-compatibility – if you
are upgrading, don't forget to install the new
Version 2.22 also adds support for multiple lines of text in the legend entries and title.
An unrelated addition to this version is support for shapes and labels using coordinates from the second Y-axis. The dotted red line on the example graph is drawn from grid positions 60 to 90 on the second axis, using this config:
$settings['shape'] = array('line', 'x1' => 'gl', 'x2' => 'gr', 'y1' => 'g60y1', 'y2' => 'g90y1', 'stroke' => '#f00', 'stroke-width' => 2, 'stroke-dasharray' => '5' );
The “g60y1” means at grid position 60 on Y axis 1 (the right axis is number 1, the left axis is 0).
There is one obscure bug fixed in this version - character entities would be
measured as a single character, but displayed as the entity code. Which means
µ would count as a single character when SVGGraph was
trying to figure out how much space the string takes up, but then it would go
ahead and display “µ” on the graph instead of
“µ”. It should display the correct character now.