javascript - d3js :The xaxis time is not showing the complete date value

标签 javascript d3.js

这是一个多图表图:see code , 那: 1.接受一个包含多个时间值和其他属性的二维数组

var values=[
 ["2011-10-01 20:46:04",63.4,42.7,12.2,44.2],
 ["2012-10-01 20:46:04",75.42,32.78.2.82.2],
 ["2013-10-01 20:46:04",73.4,20.7,92.2,75,4]
];

2.获取属性名称数组

var items=['Happy','Sad','Angry','Surprised'];

3.构建一个包含所有项目名称和值的json数组

var data = [
{"Year":"2011-10-01 20:46:04","Happy":63.4,"Sad":42.7,"Angry":12.2,"Surprised":44.2},
{"Year":"2012-10-01 20:46:04","Happy":75.4,"Sad":32.7,"Angry":78.2,"Surprised":82.2},
{"Year":"2013-10-01 20:46:04","Happy":73.4,"Sad":20.7,"Angry":92.2,"Surprised":75.4}];

4.使用数据数组,代码绘制了一个多图表,xaxis=日期值,yaxis=数据数组中除了日期值以外的其他值,代码工作正常,但问题是一旦我引入了变化非常慢的日期值(以秒为单位)尽管 xaxis 将日期值作为变量,但 axis 轴不显示完整的日期值,并且它可以很好地处理具有重要变化的日期值,但不适用于时间的小变化。

最佳答案

这是因为默认的时间刻度格式化程序是如何设置的——参见 the documentation .您可以通过引入自己的自定义多尺度时间格式来更改此设置,请参见例如this example .相关代码是这样的:

var customTimeFormat = timeFormat([
  [d3.time.format("%Y"), function() { return true; }],
  [d3.time.format("%B"), function(d) { return d.getMonth(); }],
  [d3.time.format("%b %d"), function(d) { return d.getDate() != 1; }],
  [d3.time.format("%a %d"), function(d) { return d.getDay() && d.getDate() != 1; }],
  [d3.time.format("%I %p"), function(d) { return d.getHours(); }],
  [d3.time.format("%I:%M"), function(d) { return d.getMinutes(); }],
  [d3.time.format(":%S"), function(d) { return d.getSeconds(); }],
  [d3.time.format(".%L"), function(d) { return d.getMilliseconds(); }]
]);

function timeFormat(formats) {
  return function(date) {
    var i = formats.length - 1, f = formats[i];
    while (!f[1](date)) f = formats[--i];
    return f[0](date);
  };
}

这将遍历时间格式,从最具体(最小)的格式开始,直到第二个参数中的函数返回一个计算结果为 true 的值。这样,您可以检查重要的日期范围。例如,如果直到小时的所有内容都为零,则变化仅在几天内发生,没有必要显示比这更小的任何内容。

我已经为你的例子改变了这个here也包括小时和分钟,但您会注意到底部图表的刻度标签现在重叠了。您当然可以为所有轴使用不同的多尺度时间格式。

关于javascript - d3js :The xaxis time is not showing the complete date value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20405064/

相关文章:

javascript - 为什么 firebug 在调试时会改变网站的行为?

javascript - d3词云指定个别词颜色

javascript - 交互式更新在热图中不起作用

javascript - D3 森伯斯特弧尺寸

javascript - Framework7 可调整大小的工作表模态

javascript - 在javascript中分配变量值并在html中使用

javascript - 如何在d3 v4中的scaleTime中使用rangeRound?

javascript - 没有 d3.js 的矩形数组

javascript - 连接到 Mongoose 时帖子不起作用

c# - 如何将 C# List<string[]> 转换为 Javascript 数组?