Skip to content

Instantly share code, notes, and snippets.

@mfrazie2
Last active June 19, 2017 19:21
Show Gist options
  • Select an option

  • Save mfrazie2/ef4002ca2d122dbd5528488a1e562d8a to your computer and use it in GitHub Desktop.

Select an option

Save mfrazie2/ef4002ca2d122dbd5528488a1e562d8a to your computer and use it in GitHub Desktop.
Scale-Axes
license: mit
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script src="https://d3js.org/d3.v4.min.js"></script>
<style>
body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; }
svg { width: 100%;height:100%}
</style>
</head>
<body>
<svg></svg>
<script>
const data = [100,120,53,74,95, 42, 87, 35, 150];
const rectWidth = 40,
height = 150;
const svg = d3.select('svg')
.attr('transform', 'translate(40,20)');
// const extent = d3.extent(data);
const yScale = d3.scaleLinear()
.domain([height,0])
.range([0,150]);
const yAxis = d3.axisLeft()
.scale(yScale);
svg.append('g')
.attr('transform', `translate(40, 0)`)
.call(yAxis)
// console.log(extent);
const xScale = d3.scaleLinear()
.domain([0, data.length])
.range([0,rectWidth * data.length]);
const xAxis = d3.axisBottom()
.scale(xScale);
svg.append('g')
.attr('transform', 'translate(40, 150)')
.call(xAxis);
const enter = svg.selectAll('rect')
.data(data)
.enter().append('rect')
.attr('x', (d,i) => i * rectWidth)
.attr('y', d => height - d)
.attr('width', rectWidth)
.attr('height', d => d)
.attr('fill', 'blue')
.attr('stroke', 'white')
.attr('transform', 'translate(40,1)');
// console.log(enter.nodes());
// console.log(enter.data());
// d3.scaleLinear()
// .domain([min, max]) // input
// .range([min, max]); // output
// map (0,100) to (0,1) :: domain to range
</script>
</body>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment