About
RGraph is a JavaScript charts library based on HTML5 SVG and canvas. RGraph is mature (over 15 years old) and has a wealth of features making it an ideal choice to show charts on your website.

More »

 

Download
Get the latest version of RGraph (version 6.17) from the download page. There's also older versions available, minified files and links to cdnjs.com hosted libraries.

More »

 

License
RGraph can be used for free under the GPL or if that doesn't suit your situation there's an inexpensive (£99) commercial license available.

More »

A Line chart using the Google Sheets connector

[No canvas support]

Here we have a Line chart that is fetching its data and labels from a Google Sheet using the connector utility that's provided with RGraph.

The Sheets utility is created using the key of the spreadsheet - you can get this from the URL of your spreadsheet. The Line chart in the arguments to the Sheets import utility (see below) is the ID of the worksheet that's used.

// The constructor call to the Sheets import utility showing the use of your OAuth ID, the key and
// the worksheet to use.
new RGraph.Sheets(
    'AIzaSyDCODMgxGo6q4qgkw8haCwXr__8d5r7IIg',
    '1ncvARBgXaDjzuca9i7Jyep6JTv9kms-bbIzyAxbaT0E',
    'Line chart',
    function (sheet) {/* Create the chart here */});

The data is retrieved using this: sheet.get('B2:M2') So this would get the B thru M columns on row 2.

The labels are fetched with this: xaxisLabels: sheet.get('B1:M1') which fetches the B thru M columns on the first row.

The other configuration for the chart is pretty standard stuff and the chart uses the trace animation effect.

Note: The Google Sheets connector works standalone - ie without the RGraph common library. This means that you're free to use it in your own projects, without RGraph, if you want to.


This goes in the documents header:
<script src="../libraries/RGraph.common.core.js" ></script>
<script src="../libraries/RGraph.common.sheets.js" ></script>
<script src="../libraries/RGraph.line.js" ></script>
Put this where you want the chart to show up:
<canvas id="cvs" width="600" height="250" style="float: right">[No canvas support]</canvas>
This is the code that generates the chart - it should be placed AFTER the canvas tag(s):
<script>
    // Create a new RGraph Sheets instance that allows you to connect
    // to your Google Sheet spreadsheet and retrieve data from it. The
    // first argument is the OAuth ID (see the Google Sheets documentation
    // on the RGraph website). The second argument is the key (ie the
    // unique identifier) of the spreadsheet. This can be found in the URL
    // of your spreadsheet. The third argument is the worksheet if you
    // need to give one - this argument is optional
    new RGraph.Sheets(
        'AIzaSyBPofvjcDhOdet_U2Tr4-rSLItAgaCsMCM',
        '1ncvARBgXaDjzuca9i7Jyep6JTv9kms-bbIzyAxbaT0E',
        'Line chart',
    function (sheet)
    {
        // Now, in the Sheets object callback, the Line chart can be created
        // as normal
        new RGraph.Line({
            id: 'cvs',
            
            // Use the sheets object to retrieve some data from the spreadsheet that acts
            // as the data
            data: sheet.get('B2:M2'),

            options: {
                linewidth: 5,
                tickmarksStyle: null,
                
                // Use the sheets object again to retrieve some data from the
                // spreadsheet that acts as the X-axis labels on the chart
                xaxisLabels: sheet.get('B1:M1'),

                xaxisLabelsOffsety: 5,
                colors: ['#f66'],
                shadowOffsetx: 2,
                shadowOffsety: 2,
                colorsStroke: 'rgba(0,0,0,0)',
                xaxis: false,
                yaxis: false,
                backgroundGridVlines: false,
                backgroundGridBorder: false,
                marginLeft: 35,
                marginInner: 10,
                spline: true,
                responsive: [
                    {maxWidth: null,width:600,height:250,options:{textSize: 12}},
                    {maxWidth: 900,width:400,height:200,options:{textSize: 10}}
                ]
            }
        
        // Animate the chart using the trace() effect and add some responsive capability
        // to accommodate smaller screens
        }).trace();
    });
</script>