我们使用D3.js在堆积面积图上显示时间序列数据(计算资源的利用率,每月小时采样数):
d3.json("/growth/instance_count_1month.json", function( data ) {
data.forEach(function(d) {
d.datapoints = d.datapoints.map(
function(da) {
// NOTE i'm not sure why this needs to be multiplied by 1000
return {date: new Date(da[1] * 1000),
count: da[0]};
});
});
x.domain(d3.extent(data[0].datapoints, function(d) { return d.date; }));
y.domain([0,
Math.ceil(d3.max(data.map(function (d) {return d3.max(d.datapoints, function (d) { return d.count; });})) / 100) * 100
]);
结果对我的口味相当尖锐:
使用D3或其他现成的库,是否有简单的方法来简化数据?我想减少尖锐感,但也要减少要绘制的数据量,因为它会失控。
我倾向于在UI级别执行此操作,而不是触及日志记录例程(即使必须传输冗余的JSON数据。)
答案 0 :(得分:0)
您有多种选择,您需要确定您拥有的数据类型及其使用需求的最佳前进方式。在不了解您的数据的情况下,我建议的最佳方法是重新采样。只需以较长的间隔报告数据(“卷起”数据)。或者,您可以使用滚动平均值或查看各种线平滑算法。