geom_contour:仅选择/着色其中一条轮廓线

时间:2017-05-19 01:18:07

标签: r ggplot2

如何使geom_contour创建的一条轮廓线与其他颜色分开?例如,在下面的代码中,除了标记为0.02的轮廓线之外,我怎么能保持所有轮廓线都是黑色的,我希望它是除了其余部分之外的颜色。

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

2 个答案:

答案 0 :(得分:3)

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

这是一种相当可扩展的方法。所有&#34; FALSE&#34; ..level.. == 0.02的值将显示为黑色,而&#34; TRUE&#34;显示为红色。为了使其正常工作,我需要将断点设置为与完全 0.02(以及0.05的其他倍数)对齐,这是breaks =所做的。

答案 1 :(得分:2)

我最终覆盖了两个geom_contour作为解决方案,一个与color = ..level..绑定,以便direct.label起作用,另一个突出显示特定轮廓:

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