【发布时间】:2018-11-21 15:58:40
【问题描述】:
我正在使用react v16和D3绘制一个简单的图形,但是x轴返回的格式错误,如下图所示;
格式应该是%Y-%m-%d,它甚至混合了小时。
下面是我如何转换数据,很简单没有什么复杂的;
const parseDate = d3.timeParse("%Y-%m-%d");
let max = 0, min = 0;
let timeData = recommended_time_historical.map((v,i) => {
max = Math.max(v.score, max);
min = Math.min(v.score, min);
return {
date: parseDate(v.label),
score: v.score
};
})
下面是D3代码;
// omitted for brevity
// set the ranges
const x = d3.scaleTime().rangeRound([0, width]);
const y = d3.scaleLinear().rangeRound([height, 0]);
x.domain(d3.extent(data, (d)=> {
return d.date;
}));
y.domain([min,max]);
let area = d3.area()...
// omitted for brevity
// add the X gridlines
chart.append("g")
.attr("class", "grid")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x)
.tickFormat(d3.timeParse("%Y-%m-%d"))
)
// add the Y gridlines
chart.append("g")
.attr("class", "grid")
.call(d3.axisLeft(y)
.ticks(10)
.tickSize(-width)
.tickFormat("")
)
// add the area
chart.selectAll()
.data([data]).enter()
.append('path')
.attr("class", "area")
.attr("d", area)
// omitted for brevity
chart.append("g")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x));
chart.append("g")
.call(d3.axisLeft(y));
【问题讨论】:
-
在
.tickFormat中应该是d3.timeFormat -
谢谢大家......
标签: javascript reactjs d3.js