目前,我正在尝试将我的图形知识从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
生成连接散点图上的点的箭头时,我也遇到了类似的问题。但是,我会解决这个问题,因为根本问题可能在这里。
答案 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
列。