A dual-color filled range Line chart

A dual-color filled range Line chart - so below the threshold it can be one color and above the threshold it can be another. The threshold is controllable by you. The chart below uses randomised data so if you refresh the page it will be slightly different. It uses the trace() effect as the trace2() effect uses the clip() function and so it conflicts with the range clipping.

[No canvas support]

There's information on this HOWTO page about creating dual color Line charts using gradients. It's very simple and can be done using either the RGraph Gradient() shortcut or more directly with the canvas linear gradient functionality.

This goes in the documents header:
<script src="RGraph.common.effects.js"></script>
<script src="RGraph.common.core.js"></script>
<script src="RGraph.line.js"></script>
Put this where you want the chart to show up:
<canvas id="cvs" width="600" height="250">[No canvas support]</canvas>
Threshold: <input type="text" onkeyup="update(event)" value="40" id="val" />
This is the code that generates the chart:
    function update ()
        var obj = document.getElementById('cvs').__object__;

            filledRangeThreshold: Number(document.getElementById('val').value)


    d1  = [], d2  = [], val = 47, numvlines = null;

    for (var i=0; i<90; ++i) {
        d1.push(RGraph.random(45,50) *  Math.sin(i / 57.29));
        d2.push(RGraph.random(35,45) * Math.sin(i / 57.29));

    for (var i=0; i<90; ++i) {
        val = RGraph.random(-2,2) + val
        val = Math.min(val, 50);

        d1.push(val + 3);
        d2.push(val - 3);

    line = new RGraph.Line({
        id: 'cvs',
        data: [d1, d2],
        options: {
            filled: true,
            filledRange: true,
            filledRangeThreshold: 40,
            filledRangeThresholdColors: ['rgba(255,0,0,0.5)', 'rgba(0,0,255,0.5)'],
            filledColors: 'red',
            colors: ['rgba(0,0,0,1)'],
            backgroundGridVlinesCount: numvlines = 7,
            xaxisTickmarksCount: numvlines,
            linewidth: 0.0001,
            tickmarksStyle: null,
            xaxisLabels: ['Mon','Tue','Wed','Thu','Fri','Sat','Sun','Spare']
    }).fadeIn({frames: 30})
    // Set the value of the input
    document.getElementById('val').value = 40;