SVGGraph dual and multiple Y-axis graphs

« Return to SVGGraph page

Skip to:

Sometimes one Y-axis just isn't enough. Starting in version 2.15, SVGGraph supports drawing a second axis on the right hand side of several of the graph types to show a different scale.

SVGGraph 2.27 adds support for drawing multiple Y-axes using the same option.

Enabling the second axis

Figure 1 below demonstrates what happens when you try to plot two different series of values on one grouped bar graph when the values in one series are orders of magnitude greater than the other. There are green bars in between the orange bars, but their height is less than a pixel so they cannot be seen.

Figure 1
default settings
Figure 2
dataset_axis = array(0, 1)

Figure 2 above shows the effect of setting the dataset_axis option to an array containing the values 0 and 1. The values in the array set the axis for each dataset in turn, 0 being the left axis and 1 the right - so the first dataset will be shown on the left, the second on the right.

It is not very clear from figure 2 which axis goes with which group of values, so to make it easier to indicate which is which, SVGGraph supports supplying an array to the axis styling options with an entry for each of the individual axes. Figure 3 shows the same graph with the Y axes and text labels coloured to match the bars.

Figure 3
axis_text_colour_v = array('#930', '#390')
axis_colour_v = array('#930', '#390')
Figure 4
label_v = array('Sales', 'Ages')
label_colour_v = array('#930', '#390')

Figure 4 above shows a multi-line graph instead of the grouped bar graph, with added axis labels.

The dataset_axis option is supported by all the vertical multi-dataset graphs apart from the stacked types. The stacked bar and line graph supports dataset_axis for line datasets, but not for the stacked bars.

Multiple Y-axes

Sometimes two Y-axes are not enough - so from version 2.27 of SVGGraph you can actually have as many axes as will fit on the graph:

Figure 5
dataset_axis = array(0, 1, 2, 3)
axis_space = 10
units_before_y = array('$', NULL, NULL, NULL)
units_y = array(NULL, NULL, 'cm', 'kg')

Multiple Y-axes uses the same dataset_axis option for specifying the axis to use, but instead of just 0 and 1 you can use any number of axes. The axes on the right of the graph start at 1, then continue with axis 2, axis 3 and so on. The axis numbers must be consecutive or SVGGraph will end up with an empty axis (which it won't be able to draw and you'll get the “Zero-length axis” error).

There is one extra option available when multiple axes are used, “axis_space”. This is the amount of space added between each axis on the right side of the graph (and is added on top of the other axis spacing options).

Multi-axis options

The table below lists all the options that are tagged multi-axis in the options index. These are all the options related to multiple axes - the links will take you to the description page for each option. Note that axis_right is in this list, but only because it doesn't do anything when multiple axes are enabled.

axis_colour_vaxis_font_adjust_vaxis_font_size_vaxis_font_v
axis_max_vaxis_min_vaxis_rightaxis_space
axis_stroke_width_vaxis_text_angle_vaxis_text_callback_yaxis_text_colour_v
axis_text_position_vaxis_text_space_vdataset_axisdivision_colour_v
division_size_vdivision_style_vgrid_division_vlabel_colour_v
label_font_size_vlabel_font_vlabel_font_weight_vlabel_v
label_ylog_axis_ylog_axis_y_baseminimum_grid_spacing_v
minimum_units_yshow_axis_vsubdivision_colour_vsubdivision_size_v
subdivision_style_vsubdivision_vunits_before_yunits_y

« Back to top of page Titles and axis labels »