index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Slovakia</title>
<link rel="stylesheet" type="text/css" href="vuc_2013.css" />
</head>
<body>
<h1>Slovakia</h1>
<p id="chart_sk"></p>
<p>Winners of the 1st round of elections for governor regions</p>
<script src="//d3js.org/d3.v3.min.js"></script>
<script type="text/javascript">
var specs = {i: 0, name: 'chart_sk', width: 900, height: 458, lngMin: 16.8, lngMax: 22.55, latMin: 47.65, latMax: 49.55, file: 'sk_vuc_zupan_1_2013.json', max_population: 30000, max_size: 20};
var margin = {top: 0, right: 0, bottom: 0, left: 0},
width = specs.width - margin.right,
height = specs.height - margin.top - margin.bottom;
var xScale = d3.scale.linear().domain([specs.lngMin, specs.lngMax]).range([0, width]),
yScale = d3.scale.linear().domain([specs.latMin, specs.latMax]).range([height, 0]),
radiusScale = d3.scale.sqrt().domain([0, specs.max_population]).range([0, specs.max_size]);
a=1;
a=1;
var svg = d3.select("#"+specs.name).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 div = d3.select("body").append("div")
.attr("class", "tooltip")
.style("opacity", 1e-6);
d3.json(specs.file, function(data) {
nodes = data.features
.map(function(d) {
return {
x: xScale(d.coordinates[0]),
y: yScale(d.coordinates[1]),
r: radiusScale(d.population),
title: d.name + ': ' + d.winner + ' (' + d.population + ')',
name: d.name,
id: d.id,
population: d.population,
classname: d.classname
};
});
var circle = svg.selectAll("circle")
.data(data);
var node = svg.selectAll("circle")
.data(nodes)
.enter().append("circle")
.attr("r",function(d) {
return d.r;
})
.attr("cx", function(d) {return d.x;})
.attr("cy", function(d) {return d.y;})
.attr("class", function(d) {return d.classname})
.on("mouseover", mouseover)
.on("mousemove", function(d){mousemove(d);})
.on("mouseout", mouseout)
});
function mouseover() {
div.transition()
.duration(300)
.style("opacity", 1);
}
function mousemove(d) {
div
.text(d.title)
.style("left", (d3.event.pageX ) + "px")
.style("top", (d3.event.pageY) + "px");
}
function mouseout() {
div.transition()
.duration(300)
.style("opacity", 1e-6);
}
function in_array (needle, haystack, argStrict) {
var key = '',
strict = !! argStrict;
if (strict) {
for (key in haystack) {
if (haystack[key] === needle) {
return true;
}
}
} else {
for (key in haystack) {
if (haystack[key] == needle) {
return true;
}
}
}
return false;
}
</script>
</body>
</html>
vuc_2013.css
#chart {
height: 458px;
width: 900px;
border: 1px solid;
}
div.tooltip
{
position: absolute;
text-align: center;
width: 140px;
height: 25px;
padding: 8px;
font: 10px sans-serif;
background: #ffff99;
border: solid 1px #aaa;
border-radius: 8px;
pointer-events: none;
}
circle {
fill: #888;
fill-opacity: 0.75;
}
.monika-flasikova-benova-smer-sd, .jaroslav-baska-smer-sd, .milan-belica-smer-sd, .juraj-blanar-smer-sd-sz-sns, .peter-chudik-smer-sd-smods-nas-kraj, .zdenko-trebula-smer-sd-most-hid-smk-mkp, .vladimir-manka-smer-sd-sz-hzd-ls-hzds-smods-smk-mkp-kdh, .tibor-mikus-neka {
fill: #ff0000;
color: #ff0000;
}
.pavol-freso-sdku-ds-sz-oks-smk-mkp-sas-most-hid-kdh, .ivan-uhliarik-kdh-sdku-ds, .jozef-lohyna-kdh-oks-sas-nova-most-hid-sdku-ds, .tomas-galbavy-most-hid-smk-mkp-sdku-ds-sas-oks-nova, .jan-hudacky-kdh-most-hid-sdku-ds, .rastislav-masnyk-sdku-ds-sas, .miroslav-mikolasik-kdh-sdku-ds-sas-most-hid, .ludovit-kanik-sdku-ds-most-hid-sas {
fill: #0000bb;
color: #0000bb;
}
.jozsef-nagy-most-hid {
fill: #f54200;
color: #f54200;
}
.jozsef-berenyi-smk-mkp-oks {
fill: #0b0;
color: #0b0;
}
.rudolf-bauer-kds {
fill: #800080;
color: #800080;
}
.marian-kotleba-ls-nase-slovensko {
fill: #040;
color: #040;
}
.stefan-straka-kss {
fill: #800;
color: #800;
}
.ladislav-fizik-asv {
fill: #880;
color: #880;
}
.ods {
fill: #008;
color: #008
}
.kdu-csl {
fill: #fedc35;
color: #fedc35;
}
.svobodni {
fill: #080;
color: #080;
}
.kscm {
fill: #ff0000;
color: #ff0000;
}
.top-09 {
fill: #808;
color: #808;
}
.zeman {
fill: #f00;
color: #f00;
}
.usvit {
fill: #0ff;
color: #0ff;
}
.ano-2011 {
fill: #009ee0;
color: #009ee0;
}
.pirati {
fill: #000;
color: #000;
}
.hlavu-vzhuru {
fill: #ff4;
color: #ff4;
}
.spoz {
fill: #f44;
color: #f44;
}