我正在使用jqPlot(版本1.0.2,我相信 - 7月25日发布),为各种价值提供一天的太阳能生产。当我放大一天中的一部分时,通常会呈现图表的错误区域。
以下是情节选项 -
var plotOptions = {
series: [{ showMarker:false} ],
axes: {
xaxis:{
renderer:jQuery.jqplot.DateAxisRenderer,
tickOptions:{
formatString:'%R'
},
min: data[0].time * 1000,
max: data[data.length - 1].time * 1000
},
yaxis: {
tickOptions: {
formatString: '%.3f'
}
}
},
highlighter: {
show : true,
sizeAdjust: 7.5
},
cursor: {
show : true,
zoom: true,
showToolTip: false
}
};
数据是整个电气系统的1分钟样本,当前默认值是一个相脚上的交流电流(标准北美电气系统 - 120/240伏交流电源)。通常有1,440个样本,每天一分钟。
我看到的是我会选择一个区域,通常是4或6个小时,并且数据的错误部分正在被缩放。例如,如果我选择午夜到早上8点,我会看到早上4点到早上8点(或者上午9点,如果我在早上8点后稍微缩放),则会缩放。这是相当一致的 - 显示范围的后半部分 - 但我也看到没有押韵或理由显示的情况,并且值可能放大得如此接近我无法分辨出什么是什么。 / p>
我试图从示例中大量窃取,但无济于事。我也试过限制我的数据集的大小,这似乎没什么帮助。
更新:我尝试从使用原始时间戳切换到使用Date()对象,但无济于事......
答案 0 :(得分:2)
我遇到了同样的问题。我无法切换到Flot,虽然它也是一个很好的包。我做了一些挖掘,并在jqplot-users google群组中找到了this post有答案。
这是简短的回答。 src \ plugins \ jqplot.dateAxisRenderer.js中存在错误。该帖子说,解决方法是在dataAxisRenderer.js文件中提交以下内容
min = new $.jsDate(min);
min = min.getTime() + min.getUtcOffset();
但是,我不确定是否
min = new $.jsDate(min);
min = min.getTime();
是否必要,删除此可能是个坏主意。我没有注意到任何事情,但我认为我们可以保留这些行并删除min.getUtcOffset()
。
答案 1 :(得分:1)
不要试图低估jqPlot,这是一个用于构建视觉上吸引人的图形和图表的绝佳插件,我建议你也看一下Flot来构建具有缩放功能的图形。我已经尝试了两种方法,发现 Flot 对于这种要求更加可靠。
使用Flot(来自Flot Reference)时配置 DateTime 轴的一些提示:
Flot中的时间序列支持基于Javascript时间戳,您可以看到这样的时间戳:
alert((new Date()).getTime())
在 .NET 中,您可以获得适当的时间戳:
public static int GetJavascriptTimestamp(System.DateTime input)
{
System.TimeSpan span = new System.TimeSpan(System.DateTime.Parse("1/1/1970").Ticks);
System.DateTime time = input.Subtract(span);
return (long)(time.Ticks / 10000);
}
此SO question中讨论了一些时间格式。