aboutsummaryrefslogtreecommitdiff
path: root/proj.R
diff options
context:
space:
mode:
Diffstat (limited to 'proj.R')
-rw-r--r--proj.R103
1 files changed, 103 insertions, 0 deletions
diff --git a/proj.R b/proj.R
new file mode 100644
index 0000000..4ef8114
--- /dev/null
+++ b/proj.R
@@ -0,0 +1,103 @@
+# NOTE: This script should only be used after results are generated with run.R
+
+library(grid)
+library(gridExtra)
+library(ggplot2)
+library(mp)
+
+get_legend <- function(p) {
+ tmp <- ggplot_gtable(ggplot_build(p))
+ leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
+ legend <- tmp$grobs[[leg]]
+ legend
+}
+
+args <- commandArgs(T)
+
+dataset <- args[1]
+tech <- args[2]
+iter <- args[3]
+measure <- args[4]
+out.file <- args[5]
+
+X.file <- file.path("datasets", paste(dataset, "tbl", sep="."))
+l.file <- file.path("datasets", paste(dataset, "labels", sep="."))
+Y.file <- file.path("results", dataset, tech, paste("Y-", iter, ".tbl", sep=""))
+sample.indices.file <- file.path("results", dataset, paste("sample-indices-", iter, ".tbl", sep=""))
+Ys.file <- file.path("results", dataset, paste("Ys-", iter, ".tbl", sep=""))
+Ysm.file <- file.path("results", dataset, paste("Ysm-", measure, "-", iter, ".tbl", sep=""))
+
+X <- read.table(X.file)
+Y <- read.table(Y.file)
+l <- as.factor(read.table(l.file)$V1)
+l <- l[!duplicated(X)]
+X <- scale(unique(X))
+
+sample.indices <- read.table(sample.indices.file)$V1
+ls <- l[sample.indices]
+Ys <- read.table(Ys.file)
+Ysm <- read.table(Ysm.file)
+Ym <- pekalska(dist(X), sample.indices, Ysm)
+
+dfYs <- data.frame(x=Ys[,1], y=Ys[,2], Labels=ls)
+pYs <- ggplot(dfYs) +
+ theme_minimal() +
+ theme(legend.position="none",
+ plot.background=element_rect(fill="#ffffff", color="#000000"),
+ axis.text=element_blank(),
+ axis.title=element_blank(),
+ panel.grid=element_blank()) +
+ geom_point(aes(x=x, y=y, color=Labels), size=0.5, alpha=0.8) +
+ scale_color_brewer(palette="Set1")
+pYs <- ggplotGrob(pYs)
+
+dfYsm <- data.frame(x=Ysm[,1], y=Ysm[,2], Labels=ls)
+pYsm <- ggplot(dfYsm) +
+ theme_minimal() +
+ theme(legend.position="none",
+ plot.background=element_rect(fill="#ffffff", color="#000000"),
+ axis.text=element_blank(),
+ axis.title=element_blank(),
+ panel.grid=element_blank()) +
+ geom_point(aes(x=x, y=y, color=Labels), size=0.5, alpha=0.8) +
+ scale_color_brewer(palette="Set1")
+pYsm <- ggplotGrob(pYsm)
+
+dfY <- data.frame(x=Y[,1], y=Y[,2], Labels=l)
+pY <- ggplot(dfY) +
+ theme_minimal() +
+ theme(legend.position="bottom",
+ legend.title=element_blank(),
+ legend.text=element_text(size=14),
+ legend.background=element_rect(fill="#ffffff", color="#000000"),
+ axis.text=element_blank(),
+ axis.title=element_blank(),
+ panel.grid=element_blank()) +
+ geom_point(aes(x=x, y=y, color=Labels), alpha=0.8) +
+ scale_color_brewer(palette="Set1") +
+ annotation_custom(grob = pYs,
+ xmin=min(dfY$x), xmax=min(dfY$x) + (max(dfY$x) - min(dfY$x)) / 3,
+ ymin=max(dfY$y) - (max(dfY$y) - min(dfY$y)) / 3, ymax=max(dfY$y))
+
+legend <- get_legend(pY)
+pY <- pY + theme(legend.position="none")
+
+dfYm <- data.frame(x=Ym[,1], y=Ym[,2], Labels=l)
+pYm <- ggplot(dfYm) +
+ theme_minimal() +
+ theme(legend.position="none",
+ axis.text=element_blank(),
+ axis.title=element_blank(),
+ panel.grid=element_blank()) +
+ geom_point(aes(x=x, y=y, color=Labels), alpha=0.8) +
+ scale_color_brewer(palette="Set1") +
+ annotation_custom(grob = pYsm,
+ xmin=min(dfYm$x), xmax=min(dfYm$x) + (max(dfYm$x) - min(dfYm$x)) / 3,
+ ymin=min(dfYm$y), ymax=min(dfYm$y) + (max(dfYm$y) - min(dfYm$y)) / 3)
+
+p <- grid.arrange(pY, pYm, legend,
+ ncol=2, nrow=2,
+ layout_matrix=rbind(c(3, 3), c(1, 2)),
+ widths=c(5, 5), heights=c(0.5, 4.5))
+
+ggsave(out.file, p, width=10, height=5)