RGraph is a JavaScript charts library based on
HTML5 SVG and canvas. RGraph is mature (over 18 years
old) and has a wealth of features making it an ideal
choice to use for showing charts on your website.
Version 7.11 (released in March 2026) is the
latest version of RGraph and contains just a few
updates to the code which you can see on
the changelog page. There's
a new dumbbell variation for the Bar and Horizontal bar
charts (both SVG and canvas) and the
front page layout of the
website has been tweaked.
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.11, 21st March 2026) 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:
Name: Top half
Description:
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.Example: clip: 'tophalf'
Name: Bottom half
Description:
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. Example: clip: 'bottomhalf'
Name: Left half
Description:
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. Example: clip: 'lefthalf'
Name: Right half
Description:
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. Example: clip: 'righthalf'
Name: Rectangle
Description:
If you want a rectangle that the canvas is clipped to then you can use this option - give 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. Example: clip: [0,0,200,200]
Name: Circle
Description:
If you want a circle that the canvas is clipped to then you can use this option. Give the X and Y coordinates and the radius to the clip option. Example: clip: 'circle:50,50,150'
Name: Polygon
Description:
Going a step beyond a basic rectangle, this option allows you to give 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. Example: clip: [[0,0],[100,0],[200,50],[100,100],[0,100]]
Name: Segment
Description:
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:
The center X coordinate
The center Y coordinate
The radius of the segment
The start angle of the segment. 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)
The 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)
Examples:
clip: 'segment:300,150,100,0deg,360deg'
clip: 'segment:300,150,100,3.14rad,6.28rad'
clip: 'segment:300,150,100,3.14,6.28'
Name: RGraph path
Description:
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. Example: clip: 'b a 100 100 100 0 6.29 false'
Name: X-axis percentages
Description:
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% keep 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. Examples:
clip: 'x:min-33.333%'
clip: 'x:33.333%-66.666%'
clip: 'x:66.666%-max'
Name: Y-axis percentages
Description:
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% keep 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 if you're making a multi-color Line chart. Examples:
clip: 'y:min-33.333%'
clip: 'y:33.333%-66.666%'
clip: 'y:66.666%-max'
Name: Radial percentages
Description:
Radial percentages only work for charts that have certain properties - namely centerxcentery and radius. If the chart doesn't have these then there's no point trying to use the radius: option. This means that you can use this option with the following charts: Activity, Fuel, Gauge, Horseshoe, Meter, Odometer, Pie, Radar, Rose, RScatter, Segmented, Semi-circular Progress, SVG Activity, SVG Gauge, SVG Horseshoe, SVG Pie, SVG Radar, SVG Rose, SVG Segmented, SVG Semi-circular Progress. With the radius: option you can restrict clipping to certain radial percentages starting from the centerx and centery coordinates. The min and max keywords are available, though the min keyword is just the same as specifying 0%. Examples:
clip: 'radius:min-33.333%'
clip: 'radius:33.333%-66.666%'
clip: 'radius:66.666%-max'
Name: Scale values
Description:
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 set any of the charts properties to be different so as well as the main colors you could have a different color for the background grid, axes, labels, title. Example:
clip: 'scale:min-5'
clip: 'scale:5-15'
clip: 'scale:15-max'
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).