无法使用ggplot在散点图上生成多边形

时间:2016-06-06 03:59:03

标签: r ggplot2 polygon

目前,我正在尝试将我的图形知识从R中的plot函数转换为ggplot函数。我已经开始为给定的数据集构建散点图和相应的图例,但是我想使用geom_polygon将函数ggplot合并到我的图上。

具体来说,我想从散点图的原点捕获一个三角形区域。为了重现性,请说我有以下数据集:

rawdata<-data.frame(matrix(c(1,1,1,
                         2,1,-1,
                         3,-1,-1,
                         4,-1,1,
                         4,-2,2),5,3,byrow=TRUE))
names(rawdata)<-c("Town","x.coordinate","y.coordinate")
rawdata[,1]<-as.factor(rawdata[,1])

为了构建散点图和图例,我被告知要执行以下操作:

p1<-ggplot(data=rawdata,aes(x=x.coordinate,y=y.coordinate,colour=Town,shape=Town)) 
+ theme_bw() + geom_point()  

结果如下: Click here.

我现在要做的是制作一个多边形。为此,我构建了以下数据框以在geom_polygon函数中使用:

geom_polygon(data=polygondata,aes(x = xa, y = ya),colour="darkslategray2",
             fill = "darkslategray2",alpha=0.25)

但是,当我将其与p1结合使用时,出现以下错误:

Error in eval(expr, envir, enclos) : object 'Town' not found

从一些搞乱中,我注意到当我从shape函数中省略ggplot参数时,我可以很容易地生成所需的输出,显示为here。但是,我希望保持美观的形状

当我尝试使用ggplot生成连接散点图上的点的箭头时,我也遇到了类似的问题。但是,我会解决这个问题,因为根本问题可能在这里。

1 个答案:

答案 0 :(得分:3)

将以下内容添加到polygondata

polygondata$Town = NA

即使您未在geom_polygon中使用该变量,ggplot也希望它在那里,如果该列用于主要调用ggplot的审美。

或者,如果您将初始图中的美学映射移动到geom_point而不是主要的ggplot调用,我认为您可以避免错误,如下所示:

p1 <- ggplot(data=rawdata) + 
        theme_bw() + 
        geom_point(aes(x=x.coordinate, y=y.coordinate, colour=Town, shape=Town)) 

在这种情况下,您无需向Town添加polygondata列。