Я сделал два отдельных графика рассеяния, используя ggplot2, и мне нужно объединить их в один график. Каждый график предназначен для популяции ящериц с тремя разными видами обработки (фонами). для каждого участка у меня есть следующее:
csMS = data.frame()
ellMS = data.frame()
centroidsMS = data.frame()
csplotMS = ggplot(csMS, aes(x = RG, y = GB, colour = Background)) + geom_point(size = 3, shape = 17) + #colour by background, circles size 3
geom_path(data = ell.AS, aes(x = RG, y = GB ,colour = Background), size = 1, linetype = 2) + #adding the ellipses
geom_point(data = centroidsMS, size = 3, shape = 17) + #added centroids
geom_errorbar(data = centroidsMS, aes(ymin = GB - se.GB, ymax = GB + se.GB), width = 0) + #add y error bars
geom_errorbarh(data = centroidsMS, aes(xmin = RG - se.RG, xmax = RG + se.RG), height = 0) +
theme_bw() + #white background
theme(axis.title.y = element_text(vjust = 2), axis.title.x = element_text(vjust = -0.3)) + #distance of axis titles from axis
theme(panel.border = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), #no grids
axis.line = element_line(colour = "black")) + #black axes
theme(text = element_text(size = 30)) + #font size
ylab("(G-B)/(G+B)") + xlab("(R-G)/(R+G)") + # Set text for axes labels
scale_colour_manual(values = c("black","#FF6600", "yellow1")) + #changed default colours
labs(colour = "Murray Sunset NP") +
theme(legend.title = element_text(size = "20")) + #changes the legend title
theme(legend.text = element_text(size = "20")) + #changes the legend title
theme(legend.key = element_blank()) + #removed little squares around legend symbols
theme(legend.direction = "horizontal", legend.position = c(.5, .85))
Я пытался
csASMS = csplotAS + csplotMS
но я получаю сообщение об ошибке: «Ошибка в p + o: нечисловой аргумент бинарного оператора. Вдобавок: Предупреждение: несовместимые методы (« + .gg »,« Ops.data.frame ») для« + »»
Я тоже пробовал
csASMS = grid.arrange(csplotAS, csplotMS)
но это помещает один сюжет поверх другого, но мне нужно объединить оба сюжета, чтобы они в основном представляли собой один сюжет, но с двумя отдельными легендами, поскольку каждый сюжет имеет разные условные обозначения для обозначения разных популяций ящериц.
Любая помощь будет оценена.
**** РЕДАКТИРОВАТЬ **** 12 декабря 2014 г.
Мне удалось объединить два сюжета в один, но проблема с отдельными легендами осталась. Чтобы попытаться упростить вопрос и по запросу cdeterman, я добавляю более простую форму кода с некоторыми примерами данных:
data frames: p1 and p2
> p1
treatment x y
1 Black 1 1
2 Orange 2 2
3 Yellow 3 3
> p2
treatment x y
1 Black 4 4
2 Orange 5 5
3 Yellow 6 6
Я использовал следующий код, чтобы построить график, включающий оба фрейма данных:
plot = ggplot(p1, aes(x = x, y = y, colour = treatment)) + geom_point(size = 3) + #colour by background, circles size 3
theme_bw() + #white background
theme(axis.title.y = element_text(vjust = 2), axis.title.x = element_text(vjust = -0.3)) + #distance of axis titles from axis
theme(panel.border = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), #no grids
axis.line = element_line(colour = "black")) + #black axes
theme(text = element_text(size = 30)) + #font size
scale_colour_manual(values = c("black","#FF6600", "yellow1")) + #changed default colours
labs(colour = "p1") +
theme(legend.title = element_text(size = "20")) + #changes the legend title
theme(legend.text = element_text(size = "20")) + #changes the legend title
theme(legend.key = element_blank()) + #removed little squares around legend symbols
theme(legend.direction = "horizontal", legend.position = c(.33, 1)) +
# Now to add the second plot/ No need to code for axis titles, titles positions,etc b/c it's already coded in the first plot
geom_point(data = p2, aes(x = x, y = y, colour = treatment), size = 3, shape = 17)
Это создает график, в котором каждый фрейм данных представлен разными символами (круги для p1 и треугольники для p2), но только с одной комбинированной легендой с треугольниками, наложенными на круги). Как я могу получить две отдельные легенды, по одной для каждого фрейма данных?
Спасибо!
ggplot
, чтобы получить один вызов. Вам следует изучить этот вопрос. Если ответ не дает вам желаемого, обновите свой вопрос. - person cdeterman   schedule 11.12.2014