Skip to content

Instantly share code, notes, and snippets.

@Mbrownshoes
Last active February 4, 2016 22:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Mbrownshoes/50b557fa316c129ca06f to your computer and use it in GitHub Desktop.
Save Mbrownshoes/50b557fa316c129ca06f to your computer and use it in GitHub Desktop.
month Downloads
08/15 3070
09/15 4019
10/15 4780
11/15 6531
12/15 4797
01/16 7010
<!DOCTYPE html>
<meta charset="utf-8">
<style>
body {
font: 18px sans-serif;
}
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.bar {
fill: steelblue;
}
.x.axis path {
display: none;
}
h1 {
padding-left: 80px;
}
/*.bar:hover {
fill: brown;
}*/
#tooltip {
position: absolute;
width: 100px;
height: auto;
padding: 10px;
background-color: white;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
-webkit-box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.4);
-moz-box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.4);
box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.4);
pointer-events: none;
}
#tooltip.hidden {
display: none;
}
#tooltip p {
margin: 0;
font-family: sans-serif;
font-size: 16px;
line-height: 20px;
}
</style>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
<!-- <h1>Resources Downloaded</h1> -->
<div id="tooltip" class="hidden"></div>
<script>
var margin = {top: 20, right: 20, bottom: 30, left: 80},
width = 860 - margin.left - margin.right,
height = 400 - margin.top - margin.bottom;
var x = d3.scale.ordinal()
.rangeRoundBands([0, width], .1);
var y = d3.scale.linear()
.rangeRound([height, 0]);
var color = d3.scale.ordinal()
.range(["steelblue"]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.orient("left")
.tickFormat(d3.format(".2s"));
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 + ")");
d3.csv("downloads.csv", function(error, data) {
if (error) throw error;
color.domain(d3.keys(data[0]).filter(function(key) { return key !== "month"; }));
// data.forEach(function(d) {
// var y0 = 0;
// d.ages = color.domain().map(function(name) { return {name: name, y0: y0, y1: y0 += +d[name]}; });
// d.total = d.ages[d.ages.length - 1].y1;
// });
// data.sort(function(a, b) { return b.total - a.total; });
console.log(data)
x.domain(data.map(function(d) { return d.month; }));
y.domain([0, d3.max(data, function(d) { return d.Downloads; })]);
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.call(yAxis);
// .append("text")
// .attr("transform", "rotate(-90)")
// .attr("y", -50)
// .attr("dy", ".71em")
// .style("text-anchor", "end")
// .text("Resourcs Downloaded");
svg.selectAll(".bar")
.data(data)
.enter().append("rect")
.attr("class", "bar")
// .attr("transform", function(d) { return "translate(" + x(d.month) + ",0)"; })
.attr("width", x.rangeBand())
.attr("x", function(d) { return x(d.month); })
.attr("y", function(d) { return y(d.Downloads); })
.attr("height", function(d) { return height - y(d.Downloads); })
.on("mouseover", function(d) {
//Get this bar's x/y values, then augment for the tooltip
console.log(d3.select(this).attr("transform"))
var xPosition = parseFloat(d3.select(this).attr("x")) + x.rangeBand() / 2;
var yPosition = parseFloat(d3.select(this).attr("y")) / 2 + height / 2;
console.log(xPosition)
//Update the tooltip position and value
d3.select("#tooltip")
.style("left", xPosition + "px")
.style("top", yPosition + "px")
.text(d.Downloads);
//Show the tooltip
d3.select("#tooltip").classed("hidden", false);
})
.on("mouseout", function() {
//Hide the tooltip
d3.select("#tooltip").classed("hidden", true);
})
var legend = svg.selectAll(".legend")
.data(color.domain().slice().reverse())
.enter().append("g")
.attr("class", "legend")
.attr("transform", function(d, i) { return "translate(0," + i * 20 + ")"; });
});
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment