Javascript D3每4个月滴答一次,但从第一个域日期开始

Javascript D3每4个月滴答一次,但从第一个域日期开始,javascript,d3.js,Javascript,D3.js,我想在d3中创建一个折线图,但我想每4个月显示一次刻度,因为我需要在图表中有数据的每个点显示刻度 我用了这个: // xScale is a time scale obj d3.time.scale() xAxis = d3.svg.axis() .scale(xScale) .ticks(d3.time.months, 4) .orient('bottom'); ant这是可行的,但刻度显示在我的数据中的初始日期后2天: 它显示在2015年1月1日,第一个数据为2014年12月

我想在d3中创建一个折线图,但我想每4个月显示一次刻度,因为我需要在图表中有数据的每个点显示刻度

我用了这个:

// xScale is a time scale obj d3.time.scale()

xAxis = d3.svg.axis()
  .scale(xScale)
  .ticks(d3.time.months, 4)
  .orient('bottom');
ant这是可行的,但刻度显示在我的数据中的初始日期后2天:

它显示在2015年1月1日,第一个数据为2014年12月30日


如何设置特定点的初始刻度和设置的4个月间隔?

我相信d3时间刻度将尝试平均分配日期(我不确定是否有方法指定特定日期)。如果您确切知道要显示哪些日期,可以使用带日期的输入。

我相信d3时间刻度将尝试均匀地分配日期(我不确定是否有方法指定特定日期)。如果您确切地知道要显示哪些日期,可以使用带日期的输入。

您可以确切地指定要显示哪些勾号值。例如,在我的一个项目中,我只希望每周的星期一显示为勾号,这是我的代码示例:

var xScale = d3.time.scale();

var xAxis = d3.svg.axis();
xAxis.scale(xScale);

var xAxisTicks = [];

var xAxisTickInterval = 7;
var millisecondsPerDay = 1000 * 60 * 60 * 24;

var currentMonday = new Date(currentStartTime);
while (currentMonday.getTime() <= currentEndTime)
{
    var currentMondayCopy = new Date(currentMonday.getTime());
    xAxisTicks.push(currentMondayCopy);

    currentMonday.setTime(currentMonday.getTime() + xAxisTickInterval * millisecondsPerDay);
}

xAxis.tickValues(xAxisTicks);
var xScale=d3.time.scale();
var xAxis=d3.svg.axis();
X轴标度(X轴标度);
var xAxisTicks=[];
var xAxisTickInterval=7;
var毫秒Sperday=1000*60*60*24;
var currentMonday=新日期(currentStartTime);

while(currentMonday.getTime()您可以精确指定要显示的刻度值。例如,在我的一个项目中,我只希望每周的星期一显示为刻度,这是我的代码示例:

var xScale = d3.time.scale();

var xAxis = d3.svg.axis();
xAxis.scale(xScale);

var xAxisTicks = [];

var xAxisTickInterval = 7;
var millisecondsPerDay = 1000 * 60 * 60 * 24;

var currentMonday = new Date(currentStartTime);
while (currentMonday.getTime() <= currentEndTime)
{
    var currentMondayCopy = new Date(currentMonday.getTime());
    xAxisTicks.push(currentMondayCopy);

    currentMonday.setTime(currentMonday.getTime() + xAxisTickInterval * millisecondsPerDay);
}

xAxis.tickValues(xAxisTicks);
var xScale=d3.time.scale();
var xAxis=d3.svg.axis();
X轴标度(X轴标度);
var xAxisTicks=[];
var xAxisTickInterval=7;
var毫秒Sperday=1000*60*60*24;
var currentMonday=新日期(currentStartTime);
while(currentMonday.getTime()