0
y
とylab
の4つのプロットを作成する必要があります。 Iはすべて、単一のプロットはx
y
VS値と行番号との散布図であるべきであるR:ggplot2とloop with data.table
set.seed(123)
dt <- data.table(a = rnorm(20),
b = rnorm(20),
c = rnorm(20),
d = rnorm(20),
e = rnorm(20))
あるdata.table
dt
から始まります。また、私はこのプロットは、列a
、c
、d
とdt
のe
のために繰り返さなければならないh = c(0, -2, 2, -3, 3)
median(y) + h*mad(y)
でいくつかのhline
をプロットしたいです。
私はコード
# Defining y labels #
ylabels <- c(bquote(phantom(.)^100*A~"/"*phantom(.)^200*A),
bquote(phantom(.)^101*C~"/"*phantom(.)^201*B),
bquote(phantom(.)^102*D~"/"*phantom(.)^202*D),
bquote(phantom(.)^103*E~"/"*phantom(.)^202*E))
# Selecting columns of dt
ydata <- names(dt)[c(1, 3, 4, 5)]
h <- c(0, -2, 2, -3, 3)
hcol <- c("#009E73", "#E69F00", "#E69F00", "red", "red")
# The for cycle should create the 4 plots and assign them to a list
plots <- list()
for (i in seq_along(ydata)) {
p1 <- ggplot(dt, aes_string(x = seq(1, dt[, .N]), y = ydata[i])) +
geom_point() +
geom_hline(aes_string(yintercept = median(ydata[i]) +
h * mad(ydata[i])), color = hcol) +
xlab("Replicate") +
ylab(ylabels[i]) +
scale_x_continuous(breaks = seq(1, dt[,.N])))
plots[[i]] <- p1 # add each plot into plot list
}
その後plots
がCookbook for Rからmultiplot
機能に供給され、このビットを思い付きました。
ただし、私のloop
は、中央値とマッド値を計算できないため、正しく機能しません。 コードを動作させるための提案はありますか?