Один из подходов состоит в том, чтобы взять ваш расплавленный фрейм данных и separate
вывести столбец «переменная» в «виды» и «штамм», используя функцию separate()
из tidyr
. У меня нет вашего набора данных - будет полезно, если вы сможете поделиться своим набором данных через dput(your.data.frame)
для будущих вопросов - поэтому я создал фиктивный набор данных, который похож на ваш. Здесь у нас есть два «вида» (красный и синий) и два «штамма» для каждого вида.
df <- data.frame(
time = seq(0, 40, by=10),
blue = c(0:4),
blue.1 = c(0, 1.1, 1.9, 3.1, 4.1),
red = seq(0, 8, by=2),
red.1 = c(0, 2.1, 4.2, 5.5, 8.2)
)
df.melt <- melt(df,
id.vars = 'time',
measure.vars = c('blue', 'blue.1', 'red', 'red.1'))
Затем мы можем использовать tidyr::separate()
, чтобы разделить результирующий «переменный» столбец на «виды» столбец и столбец "напряжение". К счастью, ваши данные содержат «.» который может быть удобным символом для разделения:
df.melt.mod <- df.melt %>%
separate(col=variable, into=c('species', 'strain'), sep='\\.')
Примечание. Приведенный выше код предупредит вас о том, что «синий» и «красный» не имеют "" характер, тем самым давая вам NA для столбца «напряжение». Нам все равно здесь, потому что мы не используем этот столбец для чего-либо здесь. В вашем собственном наборе данных вы тоже можете не слишком заботиться.
Тогда вы можете просто использовать stat_summary()
для всех геомов ... изменить, как считаете нужным для вашего собственного визуального и тематического материала c предпочтение. Обратите внимание, что порядок имеет значение для наслоения, поэтому я сначала строю geom_line
, затем geom_point
, затем geom_errorbar
. Также обратите внимание, что вы можете назначить group=species
эстетику c в базовом вызове ggplot()
, и это сопоставление применяется ко всем geoms
, если оно не перезаписано.
ggplot(df.melt.mod, aes(x=time, y=value, group=species)) +
stat_summary(
fun = mean,
geom='line',
aes(color=species)) +
stat_summary(
fun=mean,
geom='point') +
stat_summary(
fun.data=mean_cl_boot,
geom='errorbar',
width=0.5) +
theme_bw()