简体   繁体   English

如何在D3中更改x轴的标签

[英]How to change the label of x axis in D3

I want to make the labels of the x-axis are based on year dates. 我想使x轴的标签基于年份。 Here is my code: 这是我的代码:

var width = 600;
var height = 600;

var padding = { top: 50, right: 50, bottom: 50, left: 50 };

var dataset = [[2011, 6224], [2012, 7528], [2013, 7756], [2014, 8632], [2015, 6582], [2016, 8704]];

var min = d3.min(dataset, function(d) {
  return d[1];
})
var max = d3.max(dataset, function(d) {
  return d[1];
})

var xScale = d3.scaleLinear()
                .domain([2011, 2016])
                .range([0, width - padding.left - padding.right]);

var yScale = d3.scaleLinear()
                .domain([6000, max])
                .range([height - padding.top - padding.bottom, 0]);

var svg = d3.select('body')
            .append('svg')
            .attr('width', width)
            .attr('height', height);

var xAxis = d3.axisBottom()
              .scale(xScale);

var yAxis = d3.axisLeft()
                            .scale(yScale);

svg.append('g')
  .attr('class', 'axis')
  .attr('transform', 'translate(' + padding.left + ',' + (height - padding.bottom) + ')')
  .call(xAxis);

svg.append('g')
  .attr('class', 'axis')
    .attr('transform', 'translate(' + padding.left + ',' + padding.top + ')')
    .call(yAxis);

However, this is how my x-axis looks like this instead: 但是,这就是我的x轴的样子:

像这样

I want to know how to change the labels to year dates. 我想知道如何将标签更改为年份。

Chain this method tickFormat(d3.format("d")) where you are preparing xAxis ie:- 在准备xAxis的地方将此方法tickFormat(d3.format("d")) ,即:

var xAxis = d3.axisBottom()
                  .scale(xScale).tickFormat(d3.format("d"));

See working CodePen here 这里查看工作的CodePen

And here is the running snippet: 这是正在运行的代码段:

 var width = 600; var height = 600; var padding = { top: 50, right: 50, bottom: 50, left: 50 }; var dataset = [ [2011, 6224], [2012, 7528], [2013, 7756], [2014, 8632], [2015, 6582], [2016, 8704] ]; var min = d3.min(dataset, function(d) { return d[1]; }) var max = d3.max(dataset, function(d) { return d[1]; }) var xScale = d3.scaleLinear() .domain([2011, 2016]) .range([0, width - padding.left - padding.right]); var yScale = d3.scaleLinear() .domain([6000, max]) .range([height - padding.top - padding.bottom, 0]); var svg = d3.select('body') .append('svg') .attr('width', width) .attr('height', height); var xAxis = d3.axisBottom() .scale(xScale).tickFormat(d3.format("d")); var yAxis = d3.axisLeft() .scale(yScale); svg.append('g') .attr('class', 'axis') .attr('transform', 'translate(' + padding.left + ',' + (height - padding.bottom) + ')') .call(xAxis); svg.append('g') .attr('class', 'axis') .attr('transform', 'translate(' + padding.left + ',' + padding.top + ')') .call(yAxis); 
 <script src="https://d3js.org/d3.v4.min.js"></script> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM