{
var svg = d3.create('svg')
.attr("width", "1100")
.attr("height", "400");
var g = svg.append('g')
.classed('inner', true)
.attr('transform', "translate(40, 30)");
var data = [0, 1, 2, 3, 4, 5, 6, 7, 7.5, 8, 9, 10];
var data_log = [10, 100, 1000, 10000, 100000];
var scaleLinear = d3.scaleLinear()
.domain([1, 10])
.range([1, 600]);
var scalePow2 = d3.scalePow()
.exponent(2)
.domain([1, 10])
.range([1, 600]);
var scalePow05 = d3.scalePow()
.exponent(0.5)
.domain([1, 10])
.range([1, 600]);
var scaleSqrt = d3.scaleSqrt()
.domain([1, 10])
.range([1, 600]);
var scaleLog = d3.scaleLog()
.domain([10, 100000])
.range([1, 600]);
function drawScale(scale, data, yOffset, label) {
g.append('text')
.attr('x', 0)
.attr('y', yOffset - 10)
.text(label)
.style('font-size', '12px')
.style('font-weight', 'bold');
var group = g.append('g')
.attr('transform', `translate(0, ${yOffset})`);
group.selectAll('circle')
.data(data)
.enter()
.append('circle')
.attr('r', 3)
.attr('cx', function (d) {
return scale(d);
});
group.selectAll('text')
.data(data)
.enter()
.append('text')
.attr('x', function (d) {
return scale(d);
})
.attr('y', -8)
.text(function (d) {
return d;
});
}
drawScale(scaleLinear, data, 30, "Linear Scale");
drawScale(scalePow2, data, 80, "Power Scale (exp=2)");
drawScale(scalePow05, data, 130, "Power Scale (exp=0.5)");
drawScale(scaleSqrt, data, 180, "Sqrt Scale");
drawScale(scaleLog, data_log, 230, "Log Scale");
return svg.node();
}