A simple Rose chart

[No canvas support]

Here's a simple Rose chart that can be quite easily used as a traditional Wind Rose chart (ie based on a compass with larger segments indicating stronger winds).

The canvas Rose can be stacked or non-equi-angular and there's also an SVG version of it. The SVG version can also be configured in a stacked + non-equi-angular configuration (the canvas version can't do this). There's a demo of that in the download called svg-rose-non-equi-angular-stacked.html

Though the canvas Rose can be configured to have a 3D appearance. There's a demo of the 3D Rose online and in the download.

The SVG Rose also has a segmentsAngleOffset property. This property allows you to rotate the segments slightly and by using two Rose charts - one with a positive offset and one with a negative offset you can get a grouped effect to the chart. This is shown by a demo in the download called svg-rose-grouped.html

For smaller screens, the text is smaller and there's no CSS float applied to the SVG tag.


This goes in the documents header:
<script src="RGraph.common.core.js"></script>
<script src="RGraph.rose.js"></script>
Put this where you want the chart to show up:
<div style="float: right">
    <canvas id="cvs" width="600" height="400">[No canvas support]</canvas>
</div>
This is the code that generates the chart - it should be placed AFTER the canvas tag(s):
<script>
    // This is a simple example of the Rose chart that's been configured
    // with some labels that are positioned around the Rose chart.
    rose = new RGraph.Rose({
        id: 'cvs',
        data: [4,6,3,5,2,8,9],
        options: {
            labels: ['Luna','Kevin','Richard','John','Dave','Bob','Paul']
        }
    
    // Draw the chart and add some responsive capabilities. The chart doesn't change much - it
    // mostly just reduces in size.
    }).draw().responsive([
        {maxWidth: null,width:600,height:400,options:{textSize:12},parentCss:{'float':'right',textAlign:'none'}},
        {maxWidth: 900,width:400,height:300,options:{textSize:10},parentCss:{'float':'none',textAlign:'center'}}
    ]);
</script>