diff --git a/plot.R b/plot.R new file mode 100644 index 0000000000000000000000000000000000000000..630708d039c16e73c5ce4067d01d3fbb6a2ab19a --- /dev/null +++ b/plot.R @@ -0,0 +1,66 @@ +library(ggplot2) +library(ggthemes) +library(scales) +library(plyr) + +setwd("~/Desktop/compare/") + +textsize <- 16 +cBrwPl <- "Set1" +theme <- theme_few(base_size = textsize) + +theme(axis.text.x = element_text(angle = 90, hjust = 1), + # text=element_text(family="serif"), + legend.title=element_blank(), + legend.position=c(0.85,0.08)) + + +compare <- read.table("results.tsv",sep="\t",na.strings="") +names(compare) <- c ("db","dbver","sf","phase","q","rep","time") + +levels(compare$db) <- c("Citusdata","MonetDB","PostgreSQL") +compare$db <- ordered(compare$db,levels=c("PostgreSQL","Citusdata","MonetDB")) +levels(compare$q) <- toupper(levels(compare$q)) + +# title="Query Speed (Hot)",subtitle="TPC-H SF5 (5.2 GB)"), +# title="Query Speed (Hot)",subtitle="TPC-H SF10 (11 GB)")) + + +tpcplot <- function(data,filename="out.pdf",sf=1,phase="hotruns",queries=levels(data$q),width=8,ylimit=100,main="",sub="") { + pdata <- ddply(data[which(data$sf == as.character(sf) & data$phase==as.character(phase)),], + c("db", "q"), summarise, avgtime = mean(time), + se = sd(time) / sqrt(length(time)) ) + pdata <- pdata[pdata$q %in% queries,] + if (nrow(pdata) < 1) stop("No data, dude.") + pdata$outlier <- pdata$avgtime > ylimit + pdata[pdata$outlier,]$se <- NA + pdf(filename,width=width,height=6) + dodge <- position_dodge(width=.8) + print(ggplot(pdata,aes(x=q,y=avgtime,fill=db)) + + geom_bar(width=.65,position = dodge,stat="identity") + scale_y_continuous(limits = c(0, ylimit),oob=squish) + + geom_errorbar(aes(ymin=avgtime-se, ymax=avgtime+se), width=0.07,position=dodge) + + ggtitle(bquote(atop(.(main), atop(.(sub), "")))) + xlab("") + ylab("Duration (seconds)") + + scale_fill_manual(values = c("PostgreSQL" = "#2f7ed8", "Citusdata" = "#AA4643","MonetDB" = "#568203")) + + theme_few(base_size = textsize) + theme(legend.position="bottom", legend.title=element_blank(), panel.border = element_blank(),axis.line = element_line(colour = "black")) + + geom_text(aes(label=ifelse(outlier, paste0("^ ",round(avgtime),"s"), ""), hjust=.5,vjust=-.2), position = dodge)) + dev.off() +} + +qss <- c("Q03","Q05","Q06","Q10") + +# sf1 +tpcplot(data=compare,filename="sf1-hot-subset.pdf",sf="1",phase="hotruns",queries=qss,ylimit=4,main="Query Speed (Hot)",sub="TPC-H SF1 (1.1 GB)") +tpcplot(data=compare,filename="sf1-hot-all.pdf",sf="1",phase="hotruns",ylimit=25,main="Query Speed (Hot)",sub="TPC-H SF1 (1.1 GB)",width=20) +tpcplot(data=compare,filename="sf1-cold-subset.pdf",sf="1",phase="coldruns",queries=qss,ylimit=4,main="Query Speed (Cold)",sub="TPC-H SF1 (1.1 GB)") +tpcplot(data=compare,filename="sf1-cold-all.pdf",sf="1",phase="coldruns",ylimit=25,main="Query Speed (Cold)",sub="TPC-H SF1 (1.1 GB)",width=20) + +# sf5 +tpcplot(data=compare,filename="sf5-hot-subset.pdf",sf="5",phase="hotruns",queries=qss,ylimit=20,main="Query Speed (Hot)",sub="TPC-H SF5 (5.2 GB)") +tpcplot(data=compare,filename="sf5-hot-all.pdf",sf="5",phase="hotruns",ylimit=80,main="Query Speed (Hot)",sub="TPC-H SF5 (5.2 GB)",width=20) +tpcplot(data=compare,filename="sf5-cold-subset.pdf",sf="5",phase="coldruns",queries=qss,ylimit=20,main="Query Speed (Cold)",sub="TPC-H SF5 (5.2 GB)") +tpcplot(data=compare,filename="sf5-cold-all.pdf",sf="5",phase="coldruns",ylimit=100,main="Query Speed (Cold)",sub="TPC-H SF5 (5.2 GB)",width=20) + +# sf10 +tpcplot(data=compare,filename="sf10-hot-subset.pdf",sf="10",phase="hotruns",queries=qss,ylimit=40,main="Query Speed (Hot)",sub="TPC-H SF10 (11 GB)") +tpcplot(data=compare,filename="sf10-hot-all.pdf",sf="10",phase="hotruns",ylimit=100,main="Query Speed (Hot)",sub="TPC-H SF10 (11 GB)",width=20) +tpcplot(data=compare,filename="sf10-cold-subset.pdf",sf="10",phase="coldruns",queries=qss,ylimit=50,main="Query Speed (Cold)",sub="TPC-H SF10 (11 GB)") +tpcplot(data=compare,filename="sf10-cold-all.pdf",sf="10",phase="coldruns",ylimit=100,main="Query Speed (Cold)",sub="TPC-H SF10 (11 GB)",width=20)