/ / geom_contour: selecciona / colorea solo una de las líneas de contorno - r, ggplot2

geom_contour: selecciona / colorea solo una de las líneas de contorno - r, ggplot2

¿Cómo puedo hacer una línea de contorno creada porgeom_contour un color separado de los demás? Por ejemplo, en el código a continuación, ¿cómo puedo mantener negras todas las líneas de contorno excepto la marcada con 0.02, que me gustaría ser un color diferente al utilizado por el resto?

require(directlabels)
p <- ggplot(faithfuld, aes(eruptions, waiting)) +
geom_contour(aes(z = density, colour = ..level..))
p <- direct.label(p, list("bottom.pieces", cex = .6))

Respuestas

3 para la respuesta № 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:")

enter image description here

Esta es una forma bastante extensible de hacerlo. Todos los valores "FALSOS" para ..level.. == 0.02 se mostrará en negro, mientras que el "VERDADERO" se mostrará en rojo. Para que esto funcione correctamente, necesitaba configurar los saltos para alinearme con exactamente 0.02 (y otros múltiplos de 0.05), que es lo que el breaks = hace.


2 para la respuesta № 2

Terminé superponiendo dos geom_contour Como la solución, una ligada a la color = ..level.. así que eso direct.label Funcionaría, y el otro resaltando un contorno particular:

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