This bar chart shows the top 5 countries that won the most medals at the Rio Summer Olympics in 2016. The data was taken from the 2016 Summer Olympics Wikipedia article found here. The percentages shown next to toal medal count is the percentage of total medals given out at the games. The total number of medals given at the games was 972 medals.
Built with blockbuilder.org
This bar chart was forked from curran's block: Extremist Murders in the US
xxxxxxxxxx
<head>
<meta charset="utf-8">
<script src="https://d3js.org/d3.v4.min.js"></script>
<style>
body {
margin:0px;
}
.label {
font-size: 30pt;
font-family: 'sans-serif';
alignment-baseline: middle;
fill: black;
}
.number, .subtitle {
font-size: 20pt;
font-family: 'sans-serif';
alignment-baseline: middle;
fill: #0C0CE8;
}
.bar {
fill: #31B53D;
}
</style>
</head>
<body>
<script>
const width = 960;
const height = 500;
const margin = {
left: 50,
right: 200,
top: 90,
bottom: 52
}
const svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
svg.append('text')
.attr('class', 'subtitle')
.attr('x', margin.left)
.attr('y', 60)
.text('Medal Count by Country from Rio Olympics 2016');
svg.append('text')
.attr('class', 'subtitle')
.attr('x', margin.left)
.attr('y', 95)
.style('font-size', '20px')
.text('**Percent is the percent of total medals given at olympics');
const g = svg.append('g')
.attr('transform', `translate(${margin.left}, ${margin.top})`)
const data = [
{
name: "United States",
value: 121
},
{
name: "China",
value: 70
},
{
name: "Great Britain",
value: 67
},
{
name: "Russia",
value: 56
},
{
name: "Germany",
value: 42
}
];
const innerWidth = width - margin.left - margin.right;
const innerHeight = height - margin.top - margin.bottom;
const xValue = d => d.value;
const yValue = d => d.name;
const xScale = d3.scaleLinear()
.domain([0, d3.max(data, xValue)])
.range([0, innerWidth]);
const yScale = d3.scaleBand()
.domain(data.map(yValue).reverse())
.range([innerHeight, 0])
.padding(0.272);
const groups = g.selectAll('g').data(data);
const groupsEnter = groups
.enter().append('g')
.attr('transform', d => `translate(0, ${yScale(yValue(d))})`);
groupsEnter
.append('rect')
.attr('class', 'bar')
.attr('width', d => xScale(xValue(d)))
.attr('height', yScale.bandwidth())
.attr('fill', 'black');
groupsEnter
.append('text')
.attr('class', 'label')
.attr('x', 15)
.attr('y', yScale.bandwidth() / 2)
.text(yValue);
const percentFormat = d3.format(",.1%");
const xPercent = d => percentFormat(xValue(d) / 972);
groupsEnter
.append('text')
.attr('class', 'number')
.attr('x', d => xScale(xValue(d)) + 8)
.attr('y', yScale.bandwidth() / 2)
.text(d => `${xValue(d)} (${xPercent(d)})`);
</script>
</body>
https://d3js.org/d3.v4.min.js