SVGGraph 2.22
Published
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
the structured 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 svggraph.ini
file.
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.
The new version is available from the downloads page, or from GitHub, or using Composer.