| library(ggplot2) |
| library(svglite) |
| library(zoo) |
| library(dplyr) |
| |
| inflect <- function(x, threshold = 1){ |
| up <- sapply(1:threshold, function(n) c(x[-(seq(n))], rep(NA, n))) |
| down <- sapply(-1:-threshold, function(n) c(rep(NA,abs(n)), x[-seq(length(x), length(x) - abs(n) + 1)])) |
| a <- cbind(x,up,down) |
| list(minima = which(apply(a, 1, min) == a[,1]), maxima = which(apply(a, 1, max) == a[,1])) |
| } |
| |
| drawMinimums <- TRUE |
| drawSmoothedCurve <- FALSE |
| if (drawMinimums) { |
| filenames <- c('160K_uh8.5_2', '170K_uh8.5', '180K_uh8.5', '190K_uh8.5', '190K_uh7.5', '200K_uh8.5') |
| } else { |
| filenames <- c('160K_uh7.5', '160K_uh8.5_3', '170K_uh7.5', '180K_uh7.5', '190K_uh7.5', '200K_uh8.5', '160K_uh8.5_2', '160K_uh8.5', '170K_uh8.5', '180K_uh8.5', '190K_uh8.5') |
| } |
| dependanceOnTFilenames <- c('160K_uh8.5_2', '170K_uh8.5', '180K_uh8.5', |
| #'190K_uh8.5', |
| '190K_uh7.5', '200K_uh8.5') |
| |
| for (filename in filenames) { |
| temp <- gsub("(\\d+)K_.*", "\\1", filename) |
| uh <- gsub(".*_uh([^_]+).*", "\\1", filename) |
| table <- read.table(paste0('dades/', filename, '.txt'), sep="\t", dec=',', header=TRUE) |
| table$Smooth_IA <- rollmean(table$IA, k = 60, align = "center", fill = NA) |
| bottoms <- inflect(table$Smooth_IA, threshold = 2)$minima |
| #print(bquote("T =" ~ .(temp) ~ "K;" ~ "U"[h]~"=" ~ .(uh) ~ "V")) |
| #print(table$U1[bottoms]) |
| pplot <- ggplot(table, aes(x = U1, y = Smooth_IA)) |
| if (drawMinimums) { |
| min_vals <- read.table(paste0('dades/', filename, '_minims.txt'), sep="\t", dec=",", header=TRUE) |
| if (drawSmoothedCurve) { |
| pplot <- pplot + |
| geom_line(aes(x = U1, y = IA), colour = "#FCC8C5") + |
| geom_line(colour = "#F8766D") + |
| geom_vline(data = min_vals, aes(xintercept = U1), linetype = "dashed", color="#FAA49E") |
| } else { |
| pplot <- pplot + |
| geom_line(aes(x = U1, y = IA), colour = "#F8766D") + |
| geom_vline(data = min_vals, aes(xintercept = U1), linetype = "dashed", color="#FAA49E") |
| } |
| } else { |
| pplot <- pplot + |
| geom_line(aes(x = U1, y = IA), colour = "#F8766D") |
| } |
| pplot <- pplot + |
| xlab(bquote(U["1"] ~ "(V)")) + |
| ylab(bquote(I[A] ~ "(nA)")) + |
| ggtitle(bquote("T =" ~ .(temp) ~ "ºC;" ~ "U"[h]~"=" ~ .(uh) ~ "V")) + |
| theme(legend.position = "none", text = element_text(family = "Montserrat")) |
| outfilenamesuffix <- "" |
| if (drawMinimums) { |
| outfilenamesuffix <- "_minims" |
| } |
| ggsave(paste0('output/', filename, outfilenamesuffix, '.svg'), pplot, width = 6.6, height = 3.75, bg = "transparent") |
| } |
| |
| abs_data <- NA |
| for (filename in dependanceOnTFilenames) { |
| temp <- gsub("(\\d+)K_.*", "\\1", filename) |
| min_vals <- read.table(paste0('dades/', filename, '_minims.txt'), sep="\t", dec=",", header=TRUE) |
| ur_diffs <- diff(min_vals$U1) |
| ns <- min_vals$n[-1] |
| ur_diffs_data <- data.frame(n = ns, UR_diff = ur_diffs) |
| ur_diffs_data$T <- temp |
| if (!is.data.frame(abs_data)) { |
| abs_data <- ur_diffs_data |
| } else { |
| abs_data <- rbind(abs_data, ur_diffs_data) |
| } |
| print(paste0('T=', temp)) |
| print(paste0('Mean: ', mean(ur_diffs))) |
| print(paste0('Unc. mean: ', sd(ur_diffs)/sqrt(length(ur_diffs)))) |
| } |
| |
| urplot <- ggplot(data = abs_data, aes(x = n, y = UR_diff, color = T)) + |
| geom_line() + |
| scale_x_continuous(breaks = function(x) unique(floor(pretty(3:11)))) + |
| xlab("n") + |
| ylab(bquote(U[R] ~ "(V)")) + |
| ylim(4, 5.4) + |
| labs(color = "T (ºC)") + |
| theme(text = element_text(family = "Montserrat")) |
| ggsave('output/ur_for_different_ts.svg', urplot, width = 6.6, height = 3.75, bg = "transparent") |
| |
| boxp1plot <- ggplot(data = abs_data, aes(x = T, y = UR_diff, color = T)) + |
| geom_boxplot() + |
| xlab("T (ºC)") + |
| ylab(bquote(U[R] ~ "(V)")) + |
| #ylim(4, 5.4) + |
| theme(legend.position = "none", text = element_text(family = "Montserrat")) |
| ggsave('output/mean_ur_vs_t_boxplot.svg', boxp1plot, width = 6.6, height = 3.75, bg = "transparent") |
| |
| abs_data.summary <- abs_data %>% |
| group_by(T) %>% |
| summarise( |
| sd = sd(UR_diff, na.rm = TRUE)/sqrt(n()), |
| UR_diff = mean(UR_diff) |
| ) |
| boxp2plot <- ggplot(data = abs_data, aes(x = T, y = UR_diff, color = T)) + |
| geom_jitter( |
| position = position_jitter(0.2), color = "darkgray" |
| ) + |
| geom_point(size = 2.5, data = abs_data.summary) + |
| geom_errorbar( |
| aes(ymin = UR_diff - sd, ymax = UR_diff + sd), |
| width = 0.15, |
| data = abs_data.summary |
| ) + |
| xlab("T (ºC)") + |
| ylab(bquote(U[R] ~ "(V)")) + |
| #ylim(4, 5.4) + |
| theme(legend.position = "none", text = element_text(family = "Montserrat")) |
| ggsave('output/mean_ur_vs_t_boxplot2.svg', boxp2plot, width = 6.6, height = 3.75, bg = "transparent") |