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 »

HOWTO: Create a Bar/Line/Pie chart

To create a combined chart you can use the specific class which is a part of the RGraph.bar.js file. You first create a Bar chart object, which can be thought of as the master, and then the Line chart object (and then the Pie chart if required). You don't call the draw method of any of them - instead, you create a CombinedChart object and call its draw method. This in turn draws the charts. It sets the margin settings to be the same as the first chart (which is usually a Bar chart) and also sets a few other things (eg the marginInner and yaxisLabels for the Line chart).

Define the canvas

First things first, as normal, define the canvas tag. Nothing special here - it's just like normal.

<canvas id="cvs" width="600" height="250">[No canvas support]<canvas>

Define the Bar chart

Next, define the Bar chart. It's defined first so that the Line chart is subsequently drawn "on top" of the Bar chart. Note that the draw method isn't called - that's done later.

<script>
    bar = new RGraph.Bar({
        id: 'cvs',
        data: [4,3,8,9,5,6],
        options: {
            marginLeft: 50,
            marginRight: 5,
            marginTop: 5,
            marginBottom: 35,
            xaxisLabels: ['Fred','John','Jake','Lou','Hoolio','Jemima'],
            tooltips: ['Fred','John','Jake','Lou','Hoolio','Jemima'],
            colors: ['#ccf'],
            colorsStroke: 'rgba(0,0,0,0),
            textSize: 14
        }
    })
</script>

Define the Line chart

Now define the Line chart. The margin* and the marginInner are set by the RGraph.CombinedChart object so no need to be concerned with those. If you want to set them for the whole chart, then you can set them on the Bar chart object.

<script>
    line = new RGraph.Line({
        id: 'cvs',
        data: [8,4,5,6,3,3],
        options: {
            tickmarksStyle: 'endcircle',
            xaxis: false,
            yaxis: false,
            tooltips: ['Fred','John','Jake','Lou','Hoolio','Jemima'],
            textSize: 14
        }
    })
</script>

Define the Pie chart

Now add the Pie chart. This is positioned by hand to be in the top right corner of the chart. Even though the Pie chart is positioned by hand it uses the main charts margin settings (ie the Bar chart). This means that if you change the Bar chart margins, the Pie chart will be updated automatically.

<script>
    radius = 30;
    pie = new RGraph.Pie({
        'cvs',
        data: [4,8,5,4,3,6,2],
        options: {
            radius: radius,
            centerx: pie.canvas.width - radius - bar.get('marginRight') - 10,
            centery: radius + bar.get('marginTop') + 5,
            tooltips: ['John','Hoolio','Olga','Pete','Lou','Fred','John'],
            shadowOffsetx: 0,
            shadowOffsety: 0,
            shadowBlur: 15,
            textSize: 14
        }
    }).draw();
</script>

Create and draw the Combination chart

Now all there is to do is create the CombinationChart. This is a special object that handles all of the required settings for you.

<script>
    combo = new RGraph.CombinedChart(bar, line, pie);
    combo.draw();
</script>

The whole thing

That's all there is to it. You can add more configuration options to the Bar chart or Line chart objects if you wish - eg tooltips.

<canvas id="cvs" width="600" height="250">[No canvas support]</canvas>

<script>
    // First create the Bar chart but don't call the draw() method. Only configure the margin
    // settings and add some labels.
    bar = new RGraph.Bar({
        id: 'cvs',
        data: [4,3,8,9,5,6],
        options: {
            marginLeft: 50,
            marginRight: 5,
            marginTop: 5,
            marginBottom: 35,
            xaxisLabels: ['Fred','John','Jake','Lou','Hoolio','Jemima'],
            tooltips: ['Fred','John','Jake','Lou','Hoolio','Jemima'],
            colors: '#ccf',
            colorsStroke: 'rgba(0,0,0,0)',
            textSize: 14
        }
    })


    // Create the line chart with no axes or labels
    line = new RGraph.Line({
        id: 'cvs',
        data: [8,4,5,6,3,3],
        options: {
            tickmarksStyle: 'endcircle',
            xaxis: false,
            yaxis: false,
            tooltips: ['Fred','John','Jake','Lou','Hoolio','Jemima'],
            textSize: 14
        }
    })


    // Create the Pie chart and position it on the right of the chart. The CombinedChart class doesn't
    // do anything with the Pie - so position it ourselves.
    radius = 30;
    pie = new RGraph.Pie({
        id: 'cvs',
        data: [4,8,5,4,3,6,2],
        options: {
            radius: radius,
            centerx: pie.canvas.width - radius - bar.get('marginRight') - 10,
            centery: radius + bar.get('marginTop') + 5,
            tooltips: ['John','Hoolio','Olga','Pete','Lou','Fred','John'],
            shadowOffsetx: 0,
            shadowOffsety: 0,
            shadowBlur: 15,
            textSize: 14
        }
    });
        


    // Now create the CombinedChart object and draw() it. This will draw all
    // of the charts.
    combo = new RGraph.CombinedChart(bar, line, pie);
    combo.draw();
</script>