d3.timeFormat 在域上只有 1 个值
d3.timeFormat on domain has only 1 value
我正在尝试将 dayofweek 整数替换为其对应的名称。
var y_label = [...new Set(data.map((item) => item.y))].sort(d3.descending); // [0 - 6]
// Build Y scales and axis:
const y = d3.scaleBand().range([height, 0]).domain(y_label).padding(0.01);
svg.append("g").call(d3.axisLeft(y));
现在我正在添加.tickFormat(d3.timeFormat("%A"))
var y_label = [...new Set(data.map((item) => item.y))].sort(d3.descending); // [0 - 6]
// Build Y scales and axis:
const y = d3.scaleBand().range([height, 0]).domain(y_label).padding(0.01);
svg.append("g").call(d3.axisLeft(y).tickFormat(d3.timeFormat("%A")));
我得到的是这样的:
我什至不知道星期四是从哪里来的。
如何修复我的代码?
当您从数字构造 Date
对象时,它会将值作为自 1970 年 1 月 1 日 00:00(星期四)以来的毫秒数。
因此,从 0 到 6 的任何数字都被解释为那天的开始。
不要使用 d3.timeFormat
。而只是定义:
const weekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
....call(d3.axisLeft(y).tickFormat(d => weekDays[d.y]);
我正在尝试将 dayofweek 整数替换为其对应的名称。
var y_label = [...new Set(data.map((item) => item.y))].sort(d3.descending); // [0 - 6]
// Build Y scales and axis:
const y = d3.scaleBand().range([height, 0]).domain(y_label).padding(0.01);
svg.append("g").call(d3.axisLeft(y));
现在我正在添加.tickFormat(d3.timeFormat("%A"))
var y_label = [...new Set(data.map((item) => item.y))].sort(d3.descending); // [0 - 6]
// Build Y scales and axis:
const y = d3.scaleBand().range([height, 0]).domain(y_label).padding(0.01);
svg.append("g").call(d3.axisLeft(y).tickFormat(d3.timeFormat("%A")));
我得到的是这样的:
我什至不知道星期四是从哪里来的。 如何修复我的代码?
当您从数字构造 Date
对象时,它会将值作为自 1970 年 1 月 1 日 00:00(星期四)以来的毫秒数。
因此,从 0 到 6 的任何数字都被解释为那天的开始。
不要使用 d3.timeFormat
。而只是定义:
const weekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
....call(d3.axisLeft(y).tickFormat(d => weekDays[d.y]);