library(ggplot2) # Usage: Rscript single_scatter.r exp_name queries_dir charts_dir [faults_file] # TODO: Allow filtering resulttypes (or at least exclude OK_MARKER) args <- commandArgs(trailingOnly = TRUE) experiment <- args[1] queries_dir <- args[2] charts_dir <- args[3] faults_file <- if (length(args) >= 4) args[4] else "faults.csv" suffix <- gsub("^faults|\\.csv$", "", faults_file) datafile <- file.path(queries_dir, paste0(experiment, "_", faults_file)) if (!file.exists(datafile)) { print(paste("Input file", datafile, "is missing")) stop() } data <- readr::read_csv(datafile) data$fault_address <- strtoi(data$fault_address) tibble::glimpse(data) plot <- ggplot(data, aes(x = fault_address, y = faults)) + geom_point(aes(color = resulttype)) + scale_x_continuous( labels = function(x) sprintf("0x%X", as.integer(x)) ) + scale_y_log10() + labs(x = "Address", y = "Faults", color = "Type") + theme_minimal() dir.create(charts_dir, showWarnings = FALSE, recursive = TRUE) ggsave( file.path(charts_dir, paste0(experiment, "_scatter", suffix, ".svg")), plot = plot, )