我正在尝试使用DyGraphs绘制股票数据。它在绘制和缩放数据方面做得很好。但由于股票在假期没有交易,我的数据存在差距。我不希望星期六和星期日在x轴上显示。我想在谷歌财经上有这样的图表,其中x轴跳过星期六和星期日(没有数据的日期)。那可能吗?如果我玩绘图仪选项,我可以实现这个结果吗?
P.S。如果图表不会缩放到小时或分钟级别,我不介意。
答案 0 :(得分:2)
多年以后,我有一个简单的解决方案。
以下是我使用的数据:https://pastebin.com/kbT6gY2u
它被格式化为显示为烛台(日期,开放,关闭,高,低),因为我使用此处找到的绘图仪:http://dygraphs.com/tests/plotters.html但是我的解决方案将适用于默认绘图仪。
原则是:
代码示例(使用underscore.js和moment.js代码清晰度)
var dateIndex = [];
var data = _.map(data, function(line, n) {
dateIndex.push(line[0]); // Save the date to the array
line[0] = dateIndex.length-1; // Replace the date by the index of the date in the array
return line;
});
var g = new Dygraph(element, data, {
axes: {
x: {
valueFormatter: function (val, opts, series_name, dygraph) {
// val is the date, which we have rewritten to the array's index.
// So here we can exchange it back for the actual date, and format it
return moment(dateIndex[val]).format("dddd, MMM Do YYYY, h:mm a");
},
axisLabelFormatter: function (val, granularity, opts, dygraph) {
return moment(dateIndex[val]).format("MMM DD");
}
}
}
});
答案 1 :(得分:1)
我一直认为,也许我们可以从Dygraphs中抽象出来,让轴的定义不仅仅是线性与对数,而是问题在于它很容易变得低效。 Dygraphs很快,有时我们会保留功能以保持这种状态。但任何想法都会受到欢迎。