在ggplot2中同时显示直接标签和图例

时间:2018-12-11 05:03:29

标签: r ggplot2 legend

我正在尝试在ggplot2图上绘制2条信息:表面轮廓和区域关联。我想在轮廓图上有轮廓标签,并为域添加图例,但是当我将直接标签添加到绘图中时,我会丢失域图例。如何强制同时显示两者?

以下是一些测试数据来说明我的问题:

#Generate grid
grid_fit <-  expand.grid(x = seq(from=1, to=10), y = seq(from=1, to=10))
#Generate sample data
data_test <- data.frame(x = grid_fit$x,y = grid_fit$y,z = grid_fit$x * grid_fit$y)

polygons_test <- data.frame(   
  Domain=rep(c("Domain 1", "Domain 2"), each=3),
  x = c(1, 10, 10, 1, 1, 10), y = c(1, 1, 10, 1, 10, 10))

我在ggplot中绘制了等高线图并为域填充了多边形:

# Plot the contour plot and polygons on top
library(ggplot2)
plot1 <- ggplot() +
  geom_contour(data=data_test, 
               aes(x=x, y=y, z=z,colour=..level..), 
               na.rm=TRUE, show.legend=F) +
  geom_polygon(data=polygons_test, 
               aes(x=x, y=y, group=Domain, fill=Domain), alpha=0.25)
print(plot1)

然后我添加标签,图例从图中消失

# Print contour plot labels
library(directlabels)
plot2 <- direct.label.ggplot(plot1, "last.points")
print(plot2)

我仔细阅读了direct.label文档,发现了一个名为uselegend.ggplot(p,...)的函数,但该函数不会改变输出图形中的任何内容。

# Use the direct.label function uselegend.ggplot to add legend to plot 
plot3 <- uselegend.ggplot(plot2)
print(plot3)

0 个答案:

没有答案