Хочу слой AES в ggplot2
Я хотел бы нанести еще одну серию данных поверх текущего графика. Дополнительные данные содержат информацию только для 3 (из 6) spp, которые используются в facet_wraping.
Другая серия данных в настоящее время является столбцом (в том же файле данных).
Текущий график:
ped.num <- ggplot(data, aes(ped.length, seeds.inflorstem))
ped.num + geom_point(size=2) + theme_bw() + facet_wrap(~spp, scales = "free_y")
Дополнительный слой будет:
aes(ped.length, seeds.filled)
Я чувствую, что должен быть в состоянии построить их, используя одну и ту же ось Y, потому что они имеют немного меньшие значения. Как мне добавить этот слой?
2 ответа
Решение @ialm должно работать нормально, но я рекомендую позвонить aes
функционировать отдельно в каждом geom_*
потому что это делает код легче для чтения.
ped.num <- ggplot(data) +
geom_point(aes(x=ped.length, y=seeds.inflorstem), size=2) +
theme_bw() +
facet_wrap(~spp, scales="free_y") +
geom_point(aes(x=ped.length, y=seeds.filled))
(Вы всегда получите лучшие ответы, если вы включите пример данных, но я сделаю снимок в темноте)
Поскольку вы хотите построить две переменные, которые находятся на одном и том же data.frame
Вероятно, проще всего изменить данные перед передачей их в ggplot:
library(reshape2)
# Melting data gives you exactly one observation per row - ggplot likes that
dat.melt <- melt(dat,
id.var = c("spp", "ped.length"),
measure.var = c("seeds.inflorstem", "seeds.filled")
)
# Plotting is slightly different - instead of explicitly naming each variable,
# you'll refer to "variable" and "value"
ggplot(dat.melt, aes(x = ped.length, y = value, color = variable)) +
geom_point(size=2) +
theme_bw() +
facet_wrap(~spp, scales = "free_y")
seeds.filled
Значения следует наносить только на грани соответствующего вида.
Я предпочитаю это подходу Дрю (полностью корректному) явного отображения различных слоев, потому что вам нужен только один geom_point()
есть ли у вас две переменные или двадцать, и легко сопоставить различные эстетики variable
,