Вот 2 решения:
Предположим, что ваши данные (слегка упрощенные) выглядят так (с тремя белками, но это число, очевидно, может быть увеличено):
df <- data.frame(
level = c(2,2,1,1,0,0),
prot1 = c(rnorm(6)+1),
prot2 = c(rnorm(6)),
prot3 = c(rnorm(6)-1)
)
вы можете повторно-структурируйте данные таким образом, чтобы имена белков образовывали один столбец, а значения, которые они имеют, образуют другой столбец:
df_new <- data.frame(
level = rep(c(2,2,1,1,0,0),3),
protein_names = c(rep("prot1",6),rep("prot2",6),rep("prot3",6)),
protein_values = c(df$prot1, df$prot2, df$prot3)
)
df_new
Первое решение - базовое решение R: эта строка кода отображает все коробочные диаграммы внутриодин кадр:
boxplot(df_new$protein_values ~ df_new$level+df_new$protein_names)
Эта петля for
отображает отдельный кадр для каждого белка:
par(mfrow=c(1,3))
for(i in unique(df_new$protein_names)){
boxplot(df_new[df_new$protein_names==i,]$protein_values ~ df_new[df_new$protein_names==i,]$level)
}
Второе решение - это решение ggplot2
:
library(ggplot2)
ggplot(df_new, aes(as.factor(level), protein_values)) +
geom_boxplot() +
facet_grid(.~protein_names)
