使用带有ggplot2的直接标签来标记具有与主层不同的数据的第二层

时间:2013-11-21 22:21:54

标签: r ggplot2 labels

我正在使用ggplot2制作等高线图。我正在尝试用分割数据制作等高线图,因为我有不同时间段的数据用于绘图的不同区域。我想在同一个地块上展示它们,但没有轮廓排列。

我可以简单地生成我想要的轮廓;这是一个类似的例子:

library(ggplot2)
library(directlabels)
data(volcano)

volcano3d <- melt(volcano)
names(volcano3d) <- c("x", "y", "z")

#Splitting the data into 2 halves
volcano3d_1<-volcano3d[volcano3d$x<50,]
volcano3d_2<-volcano3d[volcano3d$x>=50,]

#Changing the z values of the 2nd half
volcano3d_2$z<-volcano3d_2$z+30

#Plotting
v <- ggplot(volcano3d_1,aes(x, y, z = z))+
stat_contour(aes(colour = ..level..))+
stat_contour(data=volcano3d_2,aes(x,y,z=z,colour=..level..))
direct.label(v)

但是,我无法让direct.label向地图的第二部分添加标签。似乎难以将其标记为具有与主ggplot层不同的数据的图层。有谁知道我可以用它标记两个图层的方式吗?

1 个答案:

答案 0 :(得分:3)

使用geom_dl标记其他图层:

WithLegend <- ggplot(volcano3d_1,aes(x, y, z=z, colour=..level..))+
  stat_contour()+
  stat_contour(data=volcano3d_2)
## direct.label labels the first colored layer.
SomeLabels <- direct.label(v)
## Additional labels can be added using geom_dl layers.
MoreLabels <- SomeLabels+
  geom_dl(aes(label=..level.., colour=..level..),
          data=volcano3d_2, method="top.pieces", stat="contour")