Jak utworzyć jedną linię konturu utworzoną przezgeom_contour ma inny kolor niż pozostałe? Na przykład w poniższym kodzie jak mogę zachować wszystkie czarne linie konturu oprócz tego oznaczonego 0,02, który chciałbym być kolorem innym niż używany przez resztę.
require(directlabels)
p <- ggplot(faithfuld, aes(eruptions, waiting)) +
geom_contour(aes(z = density, colour = ..level..))
p <- direct.label(p, list("bottom.pieces", cex = .6))
Odpowiedzi:
3 dla odpowiedzi № 1ggplot(faithfuld, aes(eruptions, waiting)) +
geom_contour(aes(z = density,
colour = factor(..level.. == 0.02,
levels = c(F, T),
labels = c("Others", "0.02"))),
breaks = 0.005*0:10) +
scale_colour_manual(values = c("black", "red")) +
labs(colour = "Of interest:")
Jest to dość rozszerzalny sposób na zrobienie tego. Wszystkie wartości "FAŁSZ" dla ..level.. == 0.02
pojawi się jako czarny, a "TRUE" jako czerwony. Aby to działało poprawnie, musiałem ustawić przerwy, aby były zgodne dokładnie 0.02 (i inne wielokrotności 0,05), czyli co breaks =
robi.
2 dla odpowiedzi nr 2
Skończyłem na dwóch geom_contour
jako rozwiązanie, jeden związany z color = ..level..
po to aby direct.label
zadziała, a drugi podkreśli konkretny kontur:
require(directlabels)
p <- ggplot(faithfuld, aes(eruptions, waiting)) +
geom_contour(aes(z = density, colour = ..level..)) +
scale_color_continuous(low = "black", high = "black") +
geom_contour(aes(z = density, colour = ..level..), breaks = .02, color = "red")
p <- direct.label(p, list("bottom.pieces", cex = .6))