/ / geom_contour: wybierz / koloruj tylko jedną z linii konturu - r, ggplot2

geom_contour: wybierz / pokoloruj tylko jedną z konturów - r, ggplot2

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 № 1
ggplot(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:")

wprowadź opis obrazu tutaj

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))