RGraph is a JavaScript charts library based on
HTML5 SVG and canvas. RGraph is mature (over 17 years
old) and has a wealth of features making it an ideal
choice to use for showing charts on your website.
Version 7.01 (released in October 2025) is the
latest version of RGraph and now includes a new tree
structure object. The accompanying Treemenu object can then turn
the object into a fully dynamic tree menu.
You can read the API documentation for the tree on
the main API documentation page
and see an example of the Treemenu
feature by following this link...
In the April 2025 (v6.21) release a new datagrid object
was added.
This makes it easy to add static or dynamic data
tables to your pages. It can be used whether you use the
canvas or SVG libraries or entirely standalone.
Get the latest version of RGraph (version 7.01, 8th October 2025) from
the download page. You can read the changelog here. There's also older versions available,
minified files and links to cdnjs.com hosted libraries.
ImportantThe pixel values that you pass to this option are NOT automatically doubled for you when scaling is enabled (which is the default from version 7). If you're clipping to percentages of the X axis, percentages of the Y axis, percentages of the radius or scale values then this won't apply to you but otherwise you will need to accommodate the scaling in your clip values. Typically this would just mean doubling the coordinates that you use because the canvas tags coordinate system is now twice as large as it was previously.
Introduction
Making individual charts - for example, a Bar chart
or a Line chart - is well within RGraphs
capabilities. As well as this, combining charts has been
feasible because of the Object Registry that was
introduced to RGraph many years ago which stores information
about the charts that have been created and updates them when
redraws are requested or are necessary. Well, the next
feature that is as significant as this is the new clipping
addition that has been introduced in version 6.17.
This new addition to RGraph allows you to easily restrict the
drawing to a certain part of the canvas or
SVG making it very easy to combine charts
- for example different colored Line charts
like the example that's linked to at the top of this page.
The clipping option can be one of multiple formats so you can
easily restrict the drawing on the canvas to a
shape,
half of the canvas, a percentage of the scale (for scaled
charts eg Bar, Line, Scatter) or a specific scale value.
Example code
Here's some example code that produces the multi-color
Line chart that's shown above.
What happens is that each
of the three Line chart objects clips the
canvas to a particular part of the scale so
that only that part gets shown on the canvas.
Each Line chart object specifies different
colors so the result is that you get three colors on the
Line chart because all three charts are
drawn on the canvas.
There are a few options that you can use to clip the
canvas tag ranging from simple halves to
entire RGraph-style paths. They are:
Clipping to the top half of the canvas
clip: 'tophalf'
Restricts drawing to the top half of the canvas.
Margin sizes are taken into account so if your top/bottom
margins are different then the halfway point won't
be the dead-center of the canvas.
Clipping to the bottom half of the canvas
clip: 'bottomhalf'
Restricts drawing to the bottom half of the canvas.
Margin sizes are taken into account so if your top/bottom
margins are different then the halfway point won't
be the dead-center of the canvas.
Clipping to the left half of the canvas
clip: 'lefthalf'
Restricts drawing to the left half of the canvas.
Margin sizes are taken into account so if your
left/right margins are different then the halfway point won't
be the dead-center of the canvas.
Clipping to the right half of the canvas
clip: 'righthalf'
Restricts drawing to the right half of the canvas.
Margin sizes are taken into account so if your
left/right margins are different then the halfway point won't
be the dead-center of the canvas.
Clipping to a rectangle (x, y, width, height)
clip: [0,0,200,200]
If all you want is a rectangle that the canvas
is clipped to
then you can use this option - just pass an array of four
numbers to the clip option. These numbers are
the X-coordinate, the Y-coordinate,
the width and the height
of the rectangle that you want to see the canvas
clipped to.
Clipping to a circle (x, y, radius)
clip: 'circle:50,50,150'
If all you want is a circle that the canvas
is clipped to
then you can use this option - just give it the
x and y coordinates and the
radius
to the clip option.
Clipping to a polygon created with the given [x, y] coordinates
clip: [[0,0],[100,0],[200,50],[100,100],[0,100]]
Going a step beyond a basic rectangle, this option allows you
to specify an array of coordinates that make up
a shape that the canvas is clipped to. For example,
if you wanted to you could clip the canvas to a
star shape (!).
If you want to clip the canvas to a circle or
a segment of a circle then this is the option for you. The
arguments (the numbers) represent the following things:
Center X coordinate
Center Y coordinate
The radius
Start angle. You can use the rad or
deg suffixes to specify the units
(rad for radians and deg
for degrees). 0 degrees (or
radians) is at the top (north)
End angle. You can use the rad or
deg suffixes to specify the units
(rad for radians and deg
for degrees). 0 degrees (or
radians) is at the top (north)
Clipping to an RGraph path string
clip: 'b a 100 100 100 0 6.29 false'
You can specify the clip property as an RGraph
path. This is
a shorthand version of a regular canvas
path. If you're using an SVG chart then this
path is just a regular SVG path string. You can
read about the canvas path shorthand on
this RGraph blog page.
Here's an example of a
canvas variant:
clip: 'b a 200 200 100 0 6.29 false' and
you could also combine this with RGraphs string
format function like this:
clip: 'b a {1} {2} {3} {4} false'.format(200,100,0,6.29)
The SVG charts also support the path option
but instead of a custom RGraph format it uses the
standard SVG path syntax.
The horizontal percentage options are useful for scaled charts when
you want to restrict drawing to part of the chart (eg the
left-half). If you use
either 0% or 100% bear in mind
that because the margins are ignored by these values the
left or right margins may be cut off - which means that you
won't see the scale.
So for this reason you can use either negative percentages,
percentages greater than 100% or there are two
keywords: min and max, as shown
by the examples here.
The vertical percentage options are useful for scaled charts
when you want to restrict drawing to part of the chart (eg the
top-half). If you use
either 0% or 100% bear in mind
that because the margins are ignored by these values the
top or bottom margins may be cut off - which means that you
won't see the title or the top of the scale labels.
So for this reason you can use either negative percentages,
percentages greater than 100% or there are two
keywords: min and max, as shown
by the examples here. This option will come in handy when
you're making a multi-color Line chart.
Radial percentages only work for charts that have certain
properties - namely centerx centery
and radius. If the chart doesn't have these then
there's no point trying to use the r: option. This
means that you can use this option with the following
charts: Activity chart
Fuel chart Gauge chart
Horseshoe chart Meter chart
Odometer chart Pie chart
Radar chart Rose chart RScatter chart
Segmented meter Semi-circular Progress bar
SVG Activity meter
SVG Gauge chart SVG Horseshoe meter
SVG Pie chart SVG Radar chart
SVG Rose chart SVG Segmented meter
SVG Semi-circular Progress bar
With the r: option you can restrict clipping
to certain radial percentages starting from the centerx
and centery coordinatates. The min and
max keywords are available, though the min
keyword is just the same as specifying 0%.
For charts that have scales (most of them, but not the
Pie chart) this allows you to clip to scale
values. The Line chart example linked to at
the top of
the page shows this option. So on a scale of 0-100, you
could show 0-5 in red, 5-15 in
yellow and 15-100 in green.
You can have any of the charts properties different so as well as the
main colors you could have a different color for the
background grid, axes, labels, title.
Example demo pages
These are some example demo pages of how you can use the clipping
feature in your charts. You can find these demo pages in
the download archive
(there are more pages available - they usually end their
names with clipping or clipped).