基准数据图表未正确计算

时间:2015-07-09 15:13:19

标签: sql-server r charts ggplot2

我几天前提出了这个问题,但在评论中已经有所不同,我认为值得在一个新问题中提出评论中的许多要点。我为这个问题的长度道歉。我希望它不是非常不清楚。

我正在使用用于跟踪软件基准测试的R Sweave文件中的ggplot2创建图表。我正在专门研究基准测试的运行时间,并且要么使用我们有数据的最早测试运行的%偏差或分钟偏差。我说最早而不是第一个的原因是因为在软件的早期版本中,我们经常发生崩溃,这导致特定的测试运行没有特定文件的数据。

这是我正在尝试用以下代码构建图表的R代码:

library(ggplot2)
library(data.table) #package I'm using to create the benchmark data

dbhandle <- SQLConn_remote(DBName = "DATABASE", ServerName = "SERVER")
Testdf<-sqlQuery(dbhandle, 'select * from TABLENAME order by FileName, Number, Category', stringsAsFactors = FALSE)

versions<-unique(Testdf[order(Testdf$Number), ][,2])

#using data.table package
setDT(Testdf)
Testdf[, Benchmark := Value[which.min(Number)], by = "FileName"]

Testdf$Version<-factor(Testdf$Version, levels = versions)
Testdf$Deviation<-Testdf$Value- Testdf$Benchmark
Testdf$DeviationP<-(Testdf$Value- Testdf$Benchmark)/Testdf$Benchmark

g<-ggplot(subset(Testdf, Category == 'Time' & !is.na(Value) & Deviation <.5) , aes(color = Value, x = Version, y = Deviation, group = FileName)) + 
  geom_line(size=.25) + geom_point(aes(shape = Build), size = 1.5) +
  scale_shape_manual(values=c(1,15)) + stat_summary(fun.y=sum, geom="line") + 
  ylab("Run Time Deviation from Benchmark (min)") +  
  scale_colour_gradient(name = 'Run Time (min)',low = 'blue', high = 'red') + 
  theme(axis.text.x = element_text(size = 10, angle = 90, vjust = .5)) + theme(axis.title.y = element_text(vjust = 1)) + 
  theme(axis.title.x = element_text(vjust = -0.1)) + theme(plot.margin=unit(c(0,0,0,0),"mm"))
g

如果您想重新创建此内容,请参阅底部的示例数据框

这是SQL表的示例:

Testdf - An Example Table

这是使用实际SQL数据生成时图表的样子:

Bad Benchmark Chart

主要问题是每一行应从零开始。它不应该从第一个x轴刻度点开始,因为正如我上面所说,有时错误会导致程序在运行期间崩溃而不留下数据。因此,benchark应该从最早的可用运行计算,或者Number对于该特定FileName的最小值Category。每行应代表特定Time的{​​{1}} FileName,图表为ValueVersion

令我头疼的是为什么这不起作用。我需要为特定Number的最小FileName条目选择基准,并为其Time绘制图表。

编辑:我意识到使用data.table会导致代码中的问题进一步降低,因此在没有该包的情况下这样做会更好。

第二次编辑:

以下是基准数据需要的内容(我正在使用代码块)。我需要为每个唯一Number选择最小FileName条目。完成后,我需要在Testdf上有一个名为Benchmark的新专栏,该专栏是时间Value的{​​{1}},每个唯一Category至少FileName。< / p>

这是我为您创建的快速示例数据框,用于重新创建SQL表:

Number

0 个答案:

没有答案