d3.js 如何在JavaScript中更改x轴上的刻度数?

sbtkgmzw  于 2023-04-30  发布在  Java
关注(0)|答案(1)|浏览(139)

下面是散点图

应该有6年[2017、2018、2019、2020、2021、2022]。有两个问题:
1.岁月的串并不完整。
1.有5个刻度而不是6个。
下面是我代码的一部分:

const xAxisG = g.append('g')
   .attr('transform', "translate(0," + innerH + ")");

  const yAxisG = g.append('g');
  const xValue = d => d.year;
  const xScale = d3.scaleTime();
  const xAxis = d3.axisBottom().scale(xScale);
  xScale
    .domain(d3.extent(data, xValue))
    .range([0, innerW]); 
  
  const circles = g
    .selectAll('circle')
    .data(data)
    .enter()
    .append('circle')
    .attr("transform", "translate(92,0)")
  
  circles
    .attr('cx', d=>xScale(xValue(d))) // Use the scales to conver the original values
    .attr('cy', d=>yScale(yValue(d)))//? yScale(yValue(d))+40 :null)
    .attr('r', 5)
    .attr('fill', d => {if (d.classification_for_rate_setting == "B") return "steelblue"; return "orange"})
    .attr("transform", "translate(40,0)")
    .append('title')
    .text((d) => `${d.primary_reason}\n${d.new_percent_change}\n${d.classification_for_rate_setting}\n${d.effective_date.toLocaleString('en-US', {month: 'short',year:'numeric'})}`);

  xAxisG.call(xAxis)
    .selectAll('text')
      .attr("transform", "translate(40,10)")
  yAxisG.call(yAxis)
sq1bmfud

sq1bmfud1#

看起来您的数据存储方式不同,因此首先:

const xAxis = d3.axisBottom()
    .scale(xScale)
    .tickFormat((d) => '2' + Math.round(d*1000)); // change to 2XXX

这是正确的刻度数。第一个刻度位于y轴正下方。不要调整刻度标签。

xAxisG.call(xAxis)
//.selectAll('text')
//.attr("transform", "translate(40,10)")

编辑:
删除圆平移以及

const circles = g
    .selectAll('circle')
    .data(data)
    .enter()
    .append('circle')
    //.attr("transform", "translate(92,0)")

相关问题