Dygraphs可以轻松显示时间序列......
但是,如果我的数据只包含两个数据点,它会自动用X小时填充X轴的间隙。是否可以禁用此功能?
我搜索并尝试了很多选项,但没有找到任何有用的东西。
示例可能是'时间序列绘图演示'来自画廊 - 如果仅在少数数据点上执行,则填补了“差距”。有几个小时。
这是一个很好的例子:
g = new Dygraph(document.getElementById('plot'),"a,b\n2008-12-01,0.9\n2008-12-02,0.3\n2008-12-03,0.7\n")
更新 - 这似乎有效:
ticker: function(a, b, pixels, opts, dygraph, vals) {
var chosen = Dygraph.pickDateTickGranularity(a, b, pixels, opts);
if(chosen==12) chosen=13;
if (chosen >= 0) {
return Dygraph.getDateAxis(a, b, chosen, opts, dygraph);
} else {
// this can happen if self.width_ is zero.
return [];
}
};
答案 0 :(得分:0)
你的问题不在于你有两点,而是你的积分需要一定的时间。 Dygraphs尝试计算给定数据集中x轴刻度线的最佳粒度。
修改默认计算的一种方法是使用pixelsPerLabel选项。
示例:http://jsfiddle.net/kaliatech/P8ehg/
var data = "a,b\n2008-12-01,0.9\n2008-12-02,0.3\n2008-12-03,0.7\n";
g = new Dygraph(document.getElementById("plot"), data, {
axes: {
x: {
pixelsPerLabel: 100
}
}
});
这需要对像素宽度进行硬编码,但最终还是依赖于您正在绘制的数据集。更灵活的方法可能是使用ticker选项,允许您提供自己的函数来计算标签粒度。请参阅dygraph-tickers.js的文档和内置函数。
另见:
编辑:使用自动收报机的示例。这要求您熟悉数据并且数据范围有些不变,否则您最终会得到不可读的x轴标签。
var g = new Dygraph(document.getElementById("demodiv3"), data(), {
title: 'Example for changing x-axis label granularity 3',
axes: {
x: {
ticker: function(a, b, pixels, opts, dygraph, vals) {
var chosen = Dygraph.pickDateTickGranularity(a, b, pixels, opts);
//Force to DAILY if built-in calculation returned SIX_HOURLY
//if(chosen==Dygraph.SIX_HOURLY)
// chosen=Dygraph.DAILY;
//or
//Force to DAILY always
chosen = Dygraph.DAILY;
if (chosen >= 0) {
return Dygraph.getDateAxis(a, b, chosen, opts, dygraph);
} else {
return [];
}
}
}
}
});