Я сопоставляю два фактора с аргументом color
в ggplot и хочу удалить его из легенды.Удаление фактора из легенды цвета ggplot, когда указано несколько.
У меня эти данные.
Data <- structure(list(StudyArea = c("AAA", "BBB", "CCC", "AAA", "BBB",
"CCC", "AAA", "BBB", "CCC"), Obs = c(190L, 481L, 219L, 190L,
481L, 219L, 190L, 481L, 219L), InSituPred = c(180, 462, 199,
180, 462, 199, 180, 462, 199), InSituSE = c(9.57382456553708,
16.5306359391421, 9.51070020039693, 9.57382456553708, 16.5306359391421,
9.51070020039693, 9.57382456553708, 16.5306359391421, 9.51070020039693
), variable = c("ExSituAAA", "ExSituAAA", "ExSituAAA", "ExSituBBB",
"ExSituBBB", "ExSituBBB", "ExSituCCC", "ExSituCCC", "ExSituCCC"
), value = c(NA, 500, 172, 156, NA, 161, 200, 562, NA), SE = c(20.8552264204181,
16.1382421185167, 21.43693858142, 20.8552264204181, 16.1382421185167,
21.43693858142, 20.8552264204181, 16.1382421185167, 21.43693858142
)), .Names = c("StudyArea", "Obs", "InSituPred", "InSituSE",
"variable", "value", "SE"), row.names = c(NA, -9L), class = "data.frame")
И используя приведенный ниже код, можете сделать график ниже.
ggplot(Data)+
geom_point(aes(x=StudyArea, y=value, color=variable),size=3, shape=1)+
geom_errorbar(aes(x=StudyArea, ymin=value-SE, ymax=value+SE, color=variable),lty = 2, cex=0.75)+
geom_point(aes(x=StudyArea, y=InSituPred, color=StudyArea),size=3, shape=1)+
geom_errorbar(aes(x=StudyArea, ymin=InSituPred-InSituSE, ymax=InSituPred+InSituSE, color=StudyArea),lty=1,cex=0.75)+
geom_point(aes(x=StudyArea, y=Obs, color=StudyArea),shape="*",size=12)
Я хочу, чтобы удалить StudyArea цвета из легенды (AAA: CCC) так, что он содержит только ExSituAAA, ExSituBBB, ExSituCCC.
ADDITION Используя приведенный ниже код (с полезными комментариями от @shadow), я могу создать рисунок ниже.
p <- ggplot(Data, aes(x=StudyArea))+
geom_point(aes(y=value, color=variable),size=3, shape=1)+
geom_errorbar(aes(ymin=value-SE, ymax=value+SE, color=variable),lty = 2, cex=0.75)+
geom_point(aes(y=InSituPred, color=StudyArea),size=3, shape=1)+
geom_errorbar(aes(ymin=InSituPred-InSituSE, ymax=InSituPred+InSituSE, color=StudyArea),lty=1,cex=0.75)+
geom_point(aes(y=Obs, color=StudyArea),shape="*",size=12) +
scale_color_discrete(breaks=c("ExSituAAA", "ExSituBBB", "ExSituCCC"))
p + scale_color_manual(name="Study Area \nPrediction",
values=c("red", "blue", "darkgreen","red","blue","darkgreen"),
breaks=c("ExSituAAA", "ExSituBBB", "ExSituCCC"))
Я хочу добавить linetype
легенду, указывающей сплошную линию = монолитную и пунктирную линию = ExSitu.
Я уточнил linetype
вручную (а не через фактор aes
) с использованием lty
, потому что мне нужно также указать color
. Глядя ниже head
, то данные $ SE является lty
= 2, а данные $ InSituSE является lty
1.
>
head(Data)
StudyArea Obs InSituPred InSituSE variable value SE
1 AAA 190 180 9.573825 ExSituAAA NA 20.85523
2 BBB 481 462 16.530636 ExSituAAA 500 16.13824
3 CCC 219 199 9.510700 ExSituAAA 172 21.43694
4 AAA 190 180 9.573825 ExSituBBB 156 20.85523
5 BBB 481 462 16.530636 ExSituBBB NA 16.13824
6 CCC 219 199 9.510700 ExSituBBB 161 21.43694
Таким образом, любые предложения о том, как добавить linetype
легенду с твердым line = InSitu и пунктирная линия = ExSitu.
Пример: Я хочу добавить ...
Спасибо заранее.
Непосредственный ответ на ваш вопрос и, возможно, вопрос вкуса, во всяком случае, вот мысль: для меня кажется немного излишним отображать область исследования _both_ в x и цвет. Возможно, идея заключалась бы в использовании цвета только для того, чтобы различать In- и Ex-situ? – Henrik
@Henrik, мне нужно, чтобы «цвет» 'InSituPred' и' Obs' соответствовал 'StudyArea.'. Кроме того, я хотел иметь соответствие' '' '' color' '' StudyArea.' У меня есть добавили еще несколько дополнений к вопросам, которые предоставляют больше специфики и строят из комментариев @shadow. спасибо за ваши мысли. –