R: Как маркировать конкретные контуры с помощью direct.label

Я относительно новичок в ggplot2, и у меня возникают проблемы с добавлением соответствующих меток в мои контуры.

Используя классический пример вулкана, я могу добавить метки к графику контура по умолчанию:

library(plyr)
library(ggplot2)
library(directlabels)
library(reshape)
volcano<-melt(volcano)
v<-ggplot(volcano, aes(x,y,z=z))
e<-v + stat_contour(aes(colour=..level..))
direct.label(e)

В приведенном выше примере метки добавляются соответствующим образом, но все усложняется, если я попытаюсь указать свои собственные точки останова для контуров:

e<-v + stat_contour(aes(breaks=c(160, 170, 180), colour=..level..))
direct.label(e)

Теперь контуры указаны перерывами, которые я предоставил, но метки все еще отображаются для всех стандартных контуров. Как мне отображать только метки для графических контуров?

Связанная проблема, как бы я нарисовал метки для уровней контура, не включенных в значение по умолчанию? Скажем разрыв 165:

e<-v + stat_contour(aes(breaks=c(165), colour=..level..))
direct.label(e)

Спасибо за любую помощь!

Ответ 1

Я не мог стоять, чтобы увидеть старый вопрос без ответа с таким легким решением.

Простой задачей было отображение внутри stat_contour(). Ваш вызов должен быть:

v<-ggplot(volcano, aes(x=X1,y=X2,z=value))  # specify the mapping properly
e<-v + stat_contour(aes(colour=..level..), breaks=c(160, 170, 180))
direct.label(e)

С разрывами, не включенными в отображение aes, и colour=..level...

enter image description here