我正在使用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
层不同的数据的图层。有谁知道我可以用它标记两个图层的方式吗?
答案 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")