<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<main>
<div id="chart_div"></div>
<h2>Beautiful Google Charts</h2>
<h5>Daily Page Hits</h5>
<div id="bar-chart"></div>
<h5>Traffic Over Time</h5>
<div id="line-chart"></div>
<h5>Page Hits per Country</h5>
<div id="pie-chart"></div>
<p>Google Charts can be <a href="https://google-developers.appspot.com/chart/">found here</a>.</p>
</main>
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700);
body {
font-family: "Open Sans", Arial;
background: #EDEDED;
}
main {
width: 500px;
margin: 10px auto;
padding: 10px 20px 30px;
background: #FFF;
box-shadow: 0 3px 5px rgba(0,0,0,0.2);
}
p {
margin-top: 2rem;
font-size: 13px;
}
#bar-chart {
width: 500px;
height: 300px;
position: relative;
}
#line-chart {
width: 500px;
height: 300px;
position: relative;
}
#bar-chart::before, #line-chart::before {
content: "";
position: absolute;
display: block;
width: 240px;
height: 30px;
left: 155px;
top: 254px;
background: #FAFAFA;
box-shadow: 1px 1px 0 0 #DDD;
}
#pie-chart {
width: 500px;
height: 250px;
position: relative;
}
#pie-chart::before {
content: "";
position: absolute;
display: block;
width: 120px;
height: 115px;
left: 315px;
top: 0;
background: #FAFAFA;
box-shadow: 1px 1px 0 0 #DDD;
}
#pie-chart::after {
content: "";
position: absolute;
display: block;
top: 260px;
left: 70px;
width: 170px;
height: 2px;
background: rgba(0,0,0,0.1);
border-radius: 50%;
box-shadow: 0 0 3px 4px rgba(0,0,0,0.1);
}
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawCharts);
function drawCharts() {
//Char User
var data = new google.visualization.DataTable();
data.addColumn('number', 'X');
data.addColumn('number', 'Dogs');
data.addRows([
[0, 0], [1, 10], [2, 23], [3, 17], [4, 18], [5, 9],
[6, 11], [7, 27], [8, 33], [9, 40], [10, 32], [11, 35],
[12, 30], [13, 40], [14, 42], [15, 47], [16, 44], [17, 48],
[18, 52], [19, 54], [20, 42], [21, 55], [22, 56], [23, 57],
[24, 60], [25, 50], [26, 52], [27, 51], [28, 49], [29, 53],
[30, 55], [31, 60], [32, 61], [33, 59], [34, 62], [35, 65],
[36, 62], [37, 58], [38, 55], [39, 61], [40, 64], [41, 65],
[42, 63], [43, 66], [44, 67], [45, 69], [46, 69], [47, 70],
[48, 72], [49, 68], [50, 66], [51, 65], [52, 67], [53, 70],
[54, 71], [55, 72], [56, 73], [57, 75], [58, 70], [59, 68],
[60, 64], [61, 60], [62, 65], [63, 67], [64, 68], [65, 69],
[66, 70], [67, 72], [68, 75], [69, 80]
]);
var options = {
hAxis: {
title: 'Time'
},
vAxis: {
title: 'Popularity'
},
backgroundColor: '#f1f8e9'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
// BEGIN BAR CHART
/*
// create zero data so the bars will 'grow'
var barZeroData = google.visualization.arrayToDataTable([
['Day', 'Page Views', 'Unique Views'],
['Sun', 0, 0],
['Mon', 0, 0],
['Tue', 0, 0],
['Wed', 0, 0],
['Thu', 0, 0],
['Fri', 0, 0],
['Sat', 0, 0]
]);
*/
// actual bar chart data
var barData = google.visualization.arrayToDataTable([
['Day', 'Page Views', 'Unique Views'],
['Sun', 1050, 600],
['Mon', 1370, 910],
['Tue', 660, 400],
['Wed', 1030, 540],
['Thu', 1000, 480],
['Fri', 1170, 960],
['Sat', 660, 320]
]);
// set bar chart options
var barOptions = {
focusTarget: 'category',
backgroundColor: 'transparent',
colors: ['cornflowerblue', 'tomato'],
fontName: 'Open Sans',
chartArea: {
left: 50,
top: 10,
width: '100%',
height: '70%'
},
bar: {
groupWidth: '80%'
},
hAxis: {
textStyle: {
fontSize: 11
}
},
vAxis: {
minValue: 0,
maxValue: 1500,
baselineColor: '#DDD',
gridlines: {
color: '#DDD',
count: 4
},
textStyle: {
fontSize: 11
}
},
legend: {
position: 'bottom',
textStyle: {
fontSize: 12
}
},
animation: {
duration: 1200,
easing: 'out',
startup: true
}
};
// draw bar chart twice so it animates
var barChart = new google.visualization.ColumnChart(document.getElementById('bar-chart'));
//barChart.draw(barZeroData, barOptions);
barChart.draw(barData, barOptions);
// BEGIN LINE GRAPH
function randomNumber(base, step) {
return Math.floor((Math.random()*step)+base);
}
function createData(year, start1, start2, step, offset) {
var ar = [];
for (var i = 0; i < 12; i++) {
ar.push([new Date(year, i), randomNumber(start1, step)+offset, randomNumber(start2, step)+offset]);
}
return ar;
}
var randomLineData = [
['Year', 'Page Views', 'Unique Views']
];
for (var x = 0; x < 7; x++) {
var newYear = createData(2010+x, 10000, 5000, 4000, 800*Math.pow(x,2));
for (var n = 0; n < 12; n++) {
randomLineData.push(newYear.shift());
}
}
var lineData = google.visualization.arrayToDataTable(randomLineData);
var animLineData = [
['Year', 'Page Views', 'Unique Views']
];
for (var x = 0; x < 7; x++) {
var zeroYear = createData(2007+x, 0, 0, 0, 0);
for (var n = 0; n < 12; n++) {
animLineData.push(zeroYear.shift());
}
}
var zeroLineData = google.visualization.arrayToDataTable(animLineData);
var lineOptions = {
backgroundColor: 'transparent',
colors: ['cornflowerblue', 'tomato'],
fontName: 'Open Sans',
focusTarget: 'category',
chartArea: {
left: 50,
top: 10,
width: '100%',
height: '70%'
},
hAxis: {
//showTextEvery: 12,
textStyle: {
fontSize: 11
},
baselineColor: 'transparent',
gridlines: {
color: 'transparent'
}
},
vAxis: {
minValue: 0,
maxValue: 50000,
baselineColor: '#DDD',
gridlines: {
color: '#DDD',
count: 4
},
textStyle: {
fontSize: 11
}
},
legend: {
position: 'bottom',
textStyle: {
fontSize: 12
}
},
animation: {
duration: 1200,
easing: 'out',
startup: true
}
};
var lineChart = new google.visualization.LineChart(document.getElementById('line-chart'));
//lineChart.draw(zeroLineData, lineOptions);
lineChart.draw(lineData, lineOptions);
// BEGIN PIE CHART
// pie chart data
var pieData = google.visualization.arrayToDataTable([
['Country', 'Page Hits'],
['USA', 7242],
['Canada', 4563],
['Mexico', 1345],
['Sweden', 946],
['Germany', 2150]
]);
// pie chart options
var pieOptions = {
backgroundColor: 'transparent',
pieHole: 0.4,
colors: [ "cornflowerblue",
"olivedrab",
"orange",
"tomato",
"crimson",
"purple",
"turquoise",
"forestgreen",
"navy",
"gray"],
pieSliceText: 'value',
tooltip: {
text: 'percentage'
},
fontName: 'Open Sans',
chartArea: {
width: '100%',
height: '94%'
},
legend: {
textStyle: {
fontSize: 13
}
}
};
// draw pie chart
var pieChart = new google.visualization.PieChart(document.getElementById('pie-chart'));
pieChart.draw(pieData, pieOptions);
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.