Подтвердить что ты не робот

Как добавить разные линии для граней

У меня есть данные, где я рассматриваю разницу в росте между монокультурой и смешанной культурой для двух разных видов. Кроме того, я сделал график, чтобы сделать мои данные ясными.

Я хочу панель с ошибками, весь набор данных, конечно, больше, но для этого графика это data.frame со средствами для штрих-кода.

plant           species     means
Mixed culture   Elytrigia   0.886625
Monoculture     Elytrigia   1.022667
Monoculture     Festuca     0.314375
Mixed culture   Festuca     0.078125

С этими данными я сделал график в ggplot2, где plant находится на оси x и means по оси y, и я использовал грань для разделения вида.

Это мой код:

    limits <- aes(ymax = meansS$means + eS$se, ymin=meansS$means - eS$se)
    dodge <- position_dodge(width=0.9)

    myplot <- ggplot(data=meansS, aes(x=plant, y=means, fill=plant)) + facet_grid(. ~ species) 
    myplot <- myplot + geom_bar(position=dodge) + geom_errorbar(limits, position=dodge, width=0.25)
    myplot <- myplot + scale_fill_manual(values=c("#6495ED","#FF7F50"))
    myplot <- myplot + labs(x = "Plant treatment", y = "Shoot biomass (gr)")  
    myplot <- myplot + opts(title="Plant competition")
    myplot <- myplot + opts(legend.position = "none")
    myplot <- myplot + opts(panel.grid.minor=theme_blank(), panel.grid.major=theme_blank())

Пока это прекрасно. Тем не менее, я хочу добавить две разные горизонтальные линии в двух гранях. Для этого я использовал этот код:

    hline.data <- data.frame(z = c(0.511,0.157), species = c("Elytrigia","Festuca")) 
    myplot <- myplot + geom_hline(aes(yintercept = z), hline.data)

Однако, если я это сделаю, я получаю сюжет, если бы были две дополнительные грани, где построены две горизонтальные линии. Вместо этого, я хочу, чтобы горизонтальные линии были построены в гранях с помощью баров, а не для создания двух новых граней. Кто-нибудь знает, как это решить.

Я думаю, что яснее, если я создам создаваемый граф:

enter image description here

4b9b3361

Ответ 1

Убедитесь, что переменные виды идентичны в обоих наборах данных. Если это фактор в одном на них, то он должен быть фактором и в другом тоже

library(ggplot2)
dummy1 <- expand.grid(X = factor(c("A", "B")), Y = rnorm(10))
dummy1$D <- rnorm(nrow(dummy1))
dummy2 <- data.frame(X = c("A", "B"), Z = c(1, 0))
ggplot(dummy1, aes(x = D, y = Y)) + geom_point() + facet_grid(~X) + 
    geom_hline(data = dummy2, aes(yintercept = Z))

enter image description here

dummy2$X <- factor(dummy2$X)
ggplot(dummy1, aes(x = D, y = Y)) + geom_point() + facet_grid(~X) + 
    geom_hline(data = dummy2, aes(yintercept = Z))

enter image description here