无法使用 ggplot 在散点图上生成多边形
Trouble producing a polygon on top of a scatterplot using ggplot
目前,我正在尝试将我的图形知识从 R 中的 plot
函数转移到 ggplot
函数。我已经开始为给定的数据集构建散点图和相应的图例,但是我想使用 ggplot
将函数 geom_polygon
合并到我的图上。
具体来说,我想从散点图的原点捕获一个三角形区域。为了再现性,假设我有以下数据集:
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
从一些乱七八糟的事情中,我注意到当我从 ggplot
函数中省略 shape
参数时,我可以轻松地生成所需的输出,如 here 所示。但是,为了美观,我希望保持形状。
当我尝试使用 ggplot
生成连接散点图上的点的箭头时,我也遇到了类似的问题。但是,我会在之后解决这个问题,因为根本问题可能就在这里。
将以下内容添加到 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
。
目前,我正在尝试将我的图形知识从 R 中的 plot
函数转移到 ggplot
函数。我已经开始为给定的数据集构建散点图和相应的图例,但是我想使用 ggplot
将函数 geom_polygon
合并到我的图上。
具体来说,我想从散点图的原点捕获一个三角形区域。为了再现性,假设我有以下数据集:
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
从一些乱七八糟的事情中,我注意到当我从 ggplot
函数中省略 shape
参数时,我可以轻松地生成所需的输出,如 here 所示。但是,为了美观,我希望保持形状。
当我尝试使用 ggplot
生成连接散点图上的点的箭头时,我也遇到了类似的问题。但是,我会在之后解决这个问题,因为根本问题可能就在这里。
将以下内容添加到 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
。