我正在使用jqPlot (我相信是1.0.2版本-- 7/25/12版本)来呈现不同值的一天的太阳能产量。当我放大一天中的某一部分时,经常会呈现图表的错误区域。
这是绘图选项--
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伏交流电源)。通常有1440个样本,一天中每分钟一个样本。
我看到的情况是,我选择了一个区域,通常是4到6个小时,然后数据的错误部分被缩放。例如,如果我选择午夜到上午8点,我会看到4am到8am (或者9am,如果我放大到上午8点多一点)而不是缩放。这是相当一致的--显示的范围的后半部分--但我也看到一些实例,显示的内容没有韵律或原因,值可能被放大到如此之近,以至于我无法分辨什么是什么。
我试图从示例中窃取大量信息,但无济于事。我还尝试限制我的数据集的大小,但似乎没有太大帮助。
更新:我尝试从使用原始时间戳切换到使用Date()对象,但没有效果...
发布于 2012-10-04 00:06:44
我遇到了同样的问题。我不能切换到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()
。
发布于 2012-08-10 09:48:41
我不想低估jqPlot,它是一个用于构建视觉上吸引人的图形和图表的很好的插件,我建议您还可以看看用于构建具有缩放功能的图形的Flot。我两个都试过了,发现Flot对于这类需求更可靠。
以下是在使用Flot时配置DateTime轴的一些提示(来自Flot Reference):
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中还讨论了一些时间格式。
https://stackoverflow.com/questions/11813457
复制相似问题