У меня есть данные по скорости вытеснения вида с тремя различными переменными (экспозиция, время года и место). Я хотел бы создать график, на котором сезон и экспозиция указаны на оси X, а сайт создается в легенде. Я достаточно легко выполнил это в Excel и хотел бы воспроизвести тот же тип в R. На данный момент я использую фрагмент кода, который, похоже, работает для другого пользователя с аналогичным вопросом, но, похоже, это не так. работать с моим?
СЦЕНАРИЙ:
dput(Data2)
structure(list(Season = structure(c(2L, 2L, 2L, 3L, 3L, 3L, 1L,
1L, 1L, 4L, 4L, 4L, 2L, 2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 4L, 4L,
4L), .Label = c("Autumn", "Spring", "Summer ", "Winter"), class = "factor"),
Exposure = structure(c(1L, 3L, 2L, 4L, 3L, 2L, 4L, 3L, 2L,
4L, 3L, 2L, 1L, 3L, 2L, 4L, 3L, 2L, 4L, 3L, 2L, 4L, 3L, 2L
), .Label = c(" Sheltered", "Exposed", "Moderately Exposed",
"Sheltered"), class = "factor"), Average = c(1L, 2L, 4L,
3L, 4L, 2L, 2L, 4L, 2L, 4L, 3L, 2L, 2L, 5L, 4L, 3L, 2L, 1L,
1L, 1L, 2L, 4L, 2L, 2L), Site = c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L), SEM = c(0.5, 0.1, 0.4, 0.5, 1, 0.5, 0.5, 0.5,
0.5, 0.5, 0.2, 0.5, 0.5, 0.1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
0.3, 0.2, 0.5, 0.5)), class = "data.frame", row.names = c(NA,
-24L))
`setwd("C:/Users/phl5/Documents/PippaPhD")
getwd()
read.csv("Graphed_Data.csv")
Data2<-read.csv("Graphed_Data.csv")
library(ggplot2)
library(gtable)
library(grid)
dodge<- position_dodge(width=0.9)
ggplot(Data2, aes(x = interaction(Exposure, Season), y = Average, fill
= factor(Site))) +
geom_bar(stat = "identity", position = position_dodge()) +
geom_errorbar(aes(ymax = Average + SEM, ymin = Average - SEM), position
= dodge, width = 0.2)
g1<- ggplot(data = Data2, aes(x = interaction(Exposure, Season), y =
Average, fill = factor(Site))) +
geom_bar(stat = "identity", position = position_dodge()) +
geom_errorbar(aes(ymax = Average + SEM, ymin = Average - SEM), position
= dodge, width = 0.2) +
coord_cartesian(ylim = c(0, 12.5))+
annotate("text", x = 1:12, y = 400,
label = rep(c("Exposed", "Moderately Exposed", "Sheltered"),4)) +
annotate("text", c(0.5, 1.5, 2.0, 2.5), y = -800, label = c("Spring",
"Summer", "Autumn", "Winter"))+
theme_classic()+
theme(plot.margin = unit(c(1,1,1,1), "lines"),
axis.title.x = element_blank(),
axis.text.x = element_blank())
g2 <- ggplot_gtable(ggplot_build(g1))
g2$layout$clip[g2$layout$name == "panel"] <- "off"
grid.draw(g2)`
Может ли кто-нибудь увидеть, очевидна ли проблема в моем коде, который я использую, или это другой сценарий, который я мог бы использовать?
Код: Вывод получается из текущего кода, с проблемой отсутствия кодов оси x вообще
Это тот результат, который мне нужен, и который я могу создать в Excel
Я очень новичок в R, но я буду очень благодарен за любую помощь.