I want to make the symbol to be $\phi_1 = 0.4$ and $\phi_2 = 0.4$ in the first column, $\phi_1 = 0.45$ and $\phi_2 = 0.45$ in the second column and #\phi_1 = 0.35$ and $\theta_1 = 0.6$ in the third column.
library(ggplot2)
library(reshape2)
set.seed(199)
MB_RMSE_sd1_phi0.8 <- runif(4, min = 0, max = 2)
TMB_RMSE_sd1_phi0.8 <- runif(4, min = 0, max = 2)
MB_RMSE_sd1_phi0.9 <- runif(4, min = 0, max = 2)
TMB_RMSE_sd1_phi0.9 <- runif(4, min = 0, max = 2)
MB_RMSE_sd1_phi0.95 <- runif(4, min = 0, max = 2)
TMB_RMSE_sd1_phi0.95 <- runif(4, min = 0, max = 2)
MB_RMSE_sd3_phi0.8 <- runif(4, min = 2, max = 5)
TMB_RMSE_sd3_phi0.8 <- runif(4, min = 2, max = 5)
MB_RMSE_sd3_phi0.9 <- runif(4, min = 2, max = 5)
TMB_RMSE_sd3_phi0.9 <- runif(4, min = 2, max = 5)
MB_RMSE_sd3_phi0.95 <- runif(4, min = 2, max = 5)
TMB_RMSE_sd3_phi0.95 <- runif(4, min = 2, max = 5)
MB_RMSE_sd5_phi0.8 <- runif(4, min = 5, max = 10)
TMB_RMSE_sd5_phi0.8 <- runif(4, min = 5, max = 10)
MB_RMSE_sd5_phi0.9 <- runif(4, min = 5, max = 10)
TMB_RMSE_sd5_phi0.9 <- runif(4, min = 5, max = 10)
MB_RMSE_sd5_phi0.95 <- runif(4, min = 5, max = 10)
TMB_RMSE_sd5_phi0.95 <- runif(4, min = 5, max = 10)
MB_RMSE_sd10_phi0.8 <- runif(4, min = 7, max = 16)
TMB_RMSE_sd10_phi0.8 <- runif(4, min = 7, max = 16)
MB_RMSE_sd10_phi0.9 <- runif(4, min = 7, max = 16)
TMB_RMSE_sd10_phi0.9 <- runif(4, min = 7, max = 16)
MB_RMSE_sd10_phi0.95 <- runif(4, min = 7, max = 16)
TMB_RMSE_sd10_phi0.95 <- runif(4, min = 7, max = 16)
ID <- rep(rep(c("10", "15", "20", "25"), 1), 1)
AR2_RMSE_df1 <- data.frame(ID, MB_RMSE_sd1_phi0.8, TMB_RMSE_sd1_phi0.8, MB_RMSE_sd1_phi0.9, TMB_RMSE_sd1_phi0.9, MB_RMSE_sd1_phi0.95, TMB_RMSE_sd1_phi0.95, MB_RMSE_sd3_phi0.8, TMB_RMSE_sd3_phi0.8, MB_RMSE_sd3_phi0.9, TMB_RMSE_sd3_phi0.9, MB_RMSE_sd3_phi0.95, TMB_RMSE_sd3_phi0.95, MB_RMSE_sd5_phi0.8, TMB_RMSE_sd5_phi0.8, MB_RMSE_sd5_phi0.9, TMB_RMSE_sd5_phi0.9, MB_RMSE_sd5_phi0.95, TMB_RMSE_sd5_phi0.95, MB_RMSE_sd10_phi0.8, TMB_RMSE_sd10_phi0.8, MB_RMSE_sd10_phi0.9, TMB_RMSE_sd10_phi0.9, MB_RMSE_sd10_phi0.95, TMB_RMSE_sd10_phi0.95)
AR2_RMSE_reshapp1 <- reshape2::melt(AR2_RMSE_df1, id = "ID")
AR2_RMSE_reshapp1 <- unique(AR2_RMSE_reshapp1)
AR2_RMSE_NEWDAT <- data.frame(RMSE = AR2_RMSE_reshapp1$value, year = AR2_RMSE_reshapp1$ID, n = rep(rep(c("10", "15", "20", "25"), each = 1), 24), Methods = rep(rep(c("MBB", "MBBR"), each = 4), 12), sd = rep(rep(c(1, 3, 5, 10), each = 24), 1), phi = rep(rep(c("c(0.4, 0.4)", "c(0.45, 0.45)", "c(0.35, 0.6)"), each = 8), 4))
AR2_RMSE_NEWDAT$sd <- factor(AR2_RMSE_NEWDAT$sd, levels = AR2_RMSE_NEWDAT$sd, labels = paste("sd ==", AR2_RMSE_NEWDAT$sd))
AR2_RMSE_NEWDAT$year <- factor(AR2_RMSE_NEWDAT$year, levels = AR2_RMSE_NEWDAT$year[1:4])
AR2_RMSE_NEWDAT$phi <- with(AR2_RMSE_NEWDAT, factor(phi, levels = phi, labels = paste("varphi ==", phi)))
AR2_RMSE_NEWDAT$n <- factor(AR2_RMSE_NEWDAT$n, levels = AR2_RMSE_NEWDAT$n[1:4])
ggplot(AR2_RMSE_NEWDAT, aes(x = n, y = RMSE, group = Methods))
geom_point(aes(shape = Methods)) geom_line(aes(linetype = Methods))
xlab("Sample Size(n)") ylab("RMSE")
ggplot2::facet_grid(sd ~ phi, scales = "free_y", labeller = label_parsed)
scale_y_continuous(expand = c(0.0, 0.0))
theme_bw(18)
theme(axis.text.x = element_text(angle = -90, vjust = 0.5))
theme(axis.title.x = element_text(size = rel(1.00), angle = 0))
theme(axis.title.y = element_text(size = rel(.55), angle = 90))
theme(legend.title = element_text(size = 12), legend.text = element_text(size = 10))
What I Want
I want a that looks like this with my data
CodePudding user response:
One option to achieve your desired result would be to set up you phi
vector as a list column instead of as a character vector. Afterwards you could use e.g. purrr::map_chr
to create your plotmath
labels by looping over the list column:
library(ggplot2)
library(tibble)
# Instead of using a character vector make your phi column a list column.
AR2_RMSE_NEWDAT <- tibble::tibble(
RMSE = AR2_RMSE_reshapp1$value,
year = AR2_RMSE_reshapp1$ID,
n = rep(rep(c("10", "15", "20", "25"), each = 1), 24),
Methods = rep(rep(c("MBB", "MBBR"), each = 4), 12),
sd = rep(rep(c(1, 3, 5, 10), each = 24), 1),
phi = rep(rep(list(c(0.4, 0.4), c(0.45, 0.45), c(0.35, 0.6)), each = 8), 4)
)
AR2_RMSE_NEWDAT$sd <- factor(AR2_RMSE_NEWDAT$sd, levels = AR2_RMSE_NEWDAT$sd, labels = paste("sd ==", AR2_RMSE_NEWDAT$sd))
AR2_RMSE_NEWDAT$year <- factor(AR2_RMSE_NEWDAT$year, levels = AR2_RMSE_NEWDAT$year[1:4])
AR2_RMSE_NEWDAT$n <- factor(AR2_RMSE_NEWDAT$n, levels = AR2_RMSE_NEWDAT$n[1:4])
# Create the labels
AR2_RMSE_NEWDAT$phi <- purrr::map_chr(AR2_RMSE_NEWDAT$phi, function(x) {
paste(paste0("varphi[", seq_along(x), "]==", x), collapse = "*textstyle(',')~", sep = "")
})
ggplot(AR2_RMSE_NEWDAT, aes(x = n, y = RMSE, group = Methods))
geom_point(aes(shape = Methods))
geom_line(aes(linetype = Methods))
xlab("Sample Size(n)")
ylab("RMSE")
ggplot2::facet_grid(sd ~ phi, scales = "free_y", labeller = label_parsed)
scale_y_continuous(expand = c(0.0, 0.0))
theme_bw(18)
theme(axis.text.x = element_text(angle = -90, vjust = 0.5))
theme(axis.title.x = element_text(size = rel(1.00), angle = 0))
theme(axis.title.y = element_text(size = rel(.55), angle = 90))
theme(legend.title = element_text(size = 12), legend.text = element_text(size = 10))