我有服务器数据(多个系列)以不同的时间间隔测量,从15秒到2小时可以追溯到几年。此数据位于sqlite数据库中。我一直在使用rrdtool将这些数据输入到他们的循环数据库格式中,然后从中生成时间图表(png文件),然后我将其显示在网页中。 rrdtool图表非常好,但我不想要维护两个数据库的麻烦,特别是当我们在工具更新期间更改数据库模式时。
目前最好的时间序列图表工具是什么(开源)。它可以是生成png文件的独立工具,也可以是javascript库。我只想传递时间戳和值,并得出图表,以及合理的缩放,轴标记(月,日,小时或组合,取决于规模)。还可以叠加和堆叠多个系列,添加图例和标签。
我简要介绍了gnuplot,google图表,chart.js和flot。 我的服务器后端是java,如果有帮助的话。
答案 0 :(得分:2)
如果您要在服务器上生成PNG文件,那么JFreeChart是您的唯一选择 - 它可以很好地支持时间序列图表等。对于其他开源Java图表库,您可以查看item 13 of the FAQ中的列表。
答案 1 :(得分:0)
看看R
。
它可以产生漂亮的图形。同时,它是一个非常轻量级的工具。
您可以非常轻松地创建可执行脚本。
这是一篇描述如何从'R`:
访问SQLite数据库的博客文章这是一个只提供一些随机信号的工作示例:
产生上述图像的可执行脚本。
#!/usr/bin/Rscript --default-packages=stats,utils,graphics,grDevices,argparser
p <- arg.parser("Sample script that generates a time-series into PNG file.")
p <- add.argument(p, "output.png", help = "The PNG file will be stored here")
argv <- parse.args(p)
# generating some random data (3 x time-series)
t <- 1:1024 # our time-span is 1024 seconds
ts1 <- runif(length(t), min=-1, max=1) # uniform noise
period <- 2 * pi / length(t)
sinefreq <- 10 # frequency of our sine wave
ts2 <- sin(t * period * sinefreq) # the sine wave signal
ts3 <- ts1 + ts2 # noise + signal
# writing the PNG to file
png(argv$output.png, width = 600, height = 500, pointsize = 12, res = 90)
{
# two plots, each in a single row
par(mfrow = c(2, 1), mar = c(4, 4, 2, 2))
plot(ts1, type = "l", col = "red", xaxs="i", ylim=c(-4,4),
main="Noise", ylab="Amplitude")
plot(ts3, type = "l", col = "gray", xaxs="i",
main="Noise modulated on a sine wave", ylab="Amplitude")
# plotting over the previous diagram
lines(ts2, col="blue", lwd=5)
}
cat("Image written to", argv$output.png, "\n")