将自定义标签添加到ggplot geom_contour

时间:2018-02-12 16:48:49

标签: r ggplot2

我试图在这些断点处制作带有指定断点和标签的等高线图。我尝试使用direct.labelgeom_dl在休息时添加标签,但失败了。

dat <- melt(volcano)
brks <- c(100, 120, 140, 160)
g <- ggplot(dat, aes(x = Var1, y = Var2, z = value)) +
  geom_contour(colour = 'black', breaks = brks)
g

该部分工作正常,但当我尝试添加标签时:

direct.label(g, list("bottom.pieces", colour='black'))

我收到错误:Need colour or fill aesthetic to infer default direct labels.

而且,当我尝试:

g + geom_dl(aes(label = brks),  method = 'bottom.pieces')

我得到:Error: Aesthetics must be either length 1 or the same as the data (5307): label, x, y, z

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

我认为我已采用变通方法使用geom_dl显示标签:

library(lattice)
library(directlabels)
dat <- melt(volcano)
brks <- c(100, 120, 140, 160)
g <- ggplot(dat, aes(x = Var1, y = Var2, z = value)) +
     geom_contour(colour='black', breaks = brks)+
     geom_dl(aes(label=..level..), method="bottom.pieces", 
             stat="contour",breaks = brks)
g

只需在geom_dl中指明您要标记中断(aes(label=..levels..))中包含的级别(breaks=brks),以便知道要显示的标签。

答案 1 :(得分:0)

首先我确定我有最新版本的直接标签。

然后:

dat <- reshape2::melt(volcano)
brks <- c(100, 120, 140, 160)
g <- ggplot(dat, aes(x = Var1, y = Var2, z = value)) +
    geom_contour(aes(colour = ..level..), breaks = brks)
g

direct.label(g, list("bottom.pieces", colour='black'))