CHARTS - Sales Funnel

HTML

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css">
<script src="http://github.highcharts.com/rambera/highcharts.js"></script>
<script src="http://github.highcharts.com/rambera/modules/funnel.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>

<div id="resizer" style="min-width: 350px; min-height: 200px; width: 600px">
    <div id="inner-resizer">
        <div id="container" style="height: 400px;">
        </div>
    </div>
</div>

CSS

#resizer {
    border: 1px solid silver;    
}
#inner-resizer { /* make room for the resize handle */
    padding: 10px;
}

JavaScript

$(function () {
    
    
    var chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            type: 'funnel',
            marginRight: 100
        },
        title: {
            text: 'Sales funnel'
        },
        plotArea: {
            shadow: null,
            borderWidth: null,
            backgroundColor: null
        },
        plotOptions: {
            series: {
                dataLabels: {
                    enabled: true,
                    format: '<b>{point.name}</b> ({point.y:,.0f})',
                    color: 'black',
                    softConnector: true
                },
                neckWidth: '30%',
                neckHeight: '25%'
                
                //-- Other available options
                // height: pixels or percent
                // width: pixels or percent
            }
        },
        legend: {
            enabled: false
        },
        series: [{
            name: 'Unique users',
            data: [
                ['Website visits',   15654],
                ['Downloads',       4064],
                ['Requested price list', 1987],
                ['Invoice sent',    976],
                ['Finalized',    40]
            ]
        }]
    });
    
    // Add the jQuery UI resizin
    var container = $('#container')[0];
    $('#resizer').resizable({
        // On resize, set the chart size to that of the 
        // resizer minus padding. If your chart has a lot of data or other
        // content, the redrawing might be slow. In that case, we recommend 
        // that you use the 'stop' event instead of 'resize'.
        resize: function() {
            chart.setSize(
                this.offsetWidth - 20, 
                this.offsetHeight - 20,
                false
            );
        }
    });
});