Combine column and line graphs on a date-based chart with scrollbar
by amcharts
HTML
<script type="text/javascript" src="http://www.amcharts.com/lib/3/amcharts.js"></script>
<script type="text/javascript" src="http://www.amcharts.com/lib/3/serial.js"></script>
<script type="text/javascript" src="http://www.amcharts.com/lib/3/themes/none.js"></script>
<div id="chartdiv"></div>
CSS
#chartdiv {
width : 100%;
height : 500px;
}
JavaScript
var chartData = generateChartData();
var chart = AmCharts.makeChart("chartdiv", {
"type": "serial",
"theme": "none",
"pathToImages": "http://www.amcharts.com/lib/3/images/",
"dataProvider": chartData,
"valueAxes": [{
"position": "left",
"title": "Unique visitors"
}],
"graphs": [{
"type": "column",
"fillAlphas": 0.4,
"valueField": "visits"
}, {
"id": "g2",
"lineThickness": 3,
"valueField": "sessions"
}],
"chartScrollbar": {
"graph": "g2"
},
"chartCursor": {
"categoryBalloonDateFormat": "JJ:NN, DD MMMM",
"cursorPosition": "mouse"
},
"categoryField": "date",
"categoryAxis": {
"minPeriod": "mm",
"parseDates": true
}
});
// generate some random data, quite different range
function generateChartData() {
var chartData = [];
// current date
var firstDate = new Date();
// now set 500 minutes back
firstDate.setMinutes(firstDate.getDate() - 1000);
// and generate 500 data items
for (var i = 0; i < 30; i++) {
var newDate = new Date(firstDate);
// each time we add one minute
newDate.setMinutes(newDate.getMinutes() + i);
// some random number
var visits = Math.round(Math.random() * 40 + 10 + i + Math.random() * i / 5);
var sessions = Math.round(Math.random() * 20 + 10 + i + Math.random() * i / 5);
// add data item to the array
chartData.push({
date: newDate,
visits: visits,
sessions: sessions
});
}
return chartData;
}