xxxxxxxxxx
<meta charset="utf-8">
<title></title>
<head>
<link href='https://fonts.googleapis.com/css?family=Amatic+SC:400,700' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Nunito:400,700' rel='stylesheet' type='text/css'>
<style>
body {
font: 10px sans-serif;
background:#000;
width:500px;
margin:0 auto;
}
img { float: left; }
svg { float: left; }
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.area { fill: black; }
.line {
stroke-width:1.5;
stroke:#eee;
}
g.select {
cursor:pointer;
}
text.chart-title {
font-family: 'Nunito', sans-serif;
}
</style>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.10/d3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js"></script>
<script>
var margin = {top: 60, right: 20, bottom: 30, left: 50},
width = 500 - margin.left - margin.right,
height = 600 - margin.top - margin.bottom;
var x = d3.scale.linear()
.domain([0, 35])
.range([0, width]);
var y = d3.scale.linear()
.domain([2, -2])
.range([80, -80]);
var yoffset = d3.scale.linear()
.domain([0, 40])
.range([400, 0])
;
var area = d3.svg.area()
.x(function(d) { return x(d.x); })
.y0(height)
.y1(function(d) { return y(d.y); })
.interpolate('basis');
var mini_line = d3.svg.line()
.x(function(d, i) { return i * 5; })
.y(function(d) { return d * 5; })
.interpolate('basis');
var line = d3.svg.line()
.x(function(d) { return x(d.x); })
.y(function(d) { return y(d.y); })
.interpolate('basis');
var svg = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
var jitter = 1;
function sinw(cycle) {
return function (x) {
return Math.sin(x / cycle);
}
}
var waves = [
d3.range(0, 20).map(sinw(3)),
d3.range(0, 20).map(sinw(2)),
d3.range(0, 20).map(sinw(1))
];
d3.json('pca_2015.json', function(data) {
console.log("Data", data);
var mdata = _.map(data, function(datum, idatum) {
//console.log('datum', datum)
return _.map(datum.x, function(d, i) {
return {x : +datum.x[i], y0: yoffset(i), y: +datum.y[i]};
})
});
console.log('mdata', mdata)
var wave = svg.selectAll('g.wave').data(mdata);
var wave_enter = wave.enter()
.append('g')
.attr('class', 'wave')
;
wave_enter.append('path')
.attr('class', 'area');
wave_enter.append('path')
.attr('class', 'line');
wave.select('path.line')
.transition()
.duration(400)
.attr('transform', function(d, i) {
//console.log('translate(' + 0 + ',' + yoffset(i) + ')');
return 'translate(' + 0 + ',' + yoffset(i) + ')';
//return 'translate(' + 0 + ',' + 0 + ')';
})
.attr('d', line)
.attr('fill', 'black')
.style('fill', 'black')
;
svg.append('text')
.attr('class', 'chart-title')
.text('PRINCIPAL COMPONENTS - HOF 2015')
.style('font-size', 24)
.attr('x', -32)
.attr('y', 10)
.style('fill', 'white')
;
svg.selectAll('.player-label')
.data(data)
.enter()
.append('text')
.attr('class', 'player-label')
.text(function(d) {
console.log('id', d, d.id)
return d.id.replace('_2015','');
})
.attr('x', -5)
.attr('y', function(d, i) {
return yoffset(i)
})
.attr('text-anchor', 'end')
.style('fill', 'white')
.style('font-size', 6)
.style('')
;
});
</script>
https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.10/d3.min.js
https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js