使用ggplot为散点图生成离散图例时遇到问题

时间:2016-06-06 02:27:43

标签: r ggplot2 colors legend

我对R中的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])

现在,使用ggplot,我试图找出如何在散点图上生成图例。到目前为止,我已经完成了以下工作:

p1<-ggplot(data=rawdata,aes(x=x.coordinate,y=y.coordinate,fill=rawdata[,1]))
+geom_point(data=rawdata,aes(x=x.coordinate,y=y.coordinate))

我使用上面的代码

生成以下内容

As you can see, the coordinates have been plotted and the legend has been constructed, but they are only colored black.

我了解到要设置颜色坐标,我需要使用colour=rawdata[,1]函数中的参数geom_point来为点着色。但是,当我尝试这个时,我得到以下错误代码:

Error: Aesthetics must be either length 1 or the same as the data (4): colour

我知道这与矢量的长度有关,但截至目前,我完全不知道如何解决这个小问题。

1 个答案:

答案 0 :(得分:1)

geom_point()需要colour,而不是fill。并且,在将数据传递到ggplot(data = ..)之后,无需再将其传递到geom_point()

我还修复了您的示例中df的创建错误。

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])


library(ggplot2)

ggplot(data=rawdata,aes(x=x.coordinate,y=y.coordinate,colour=Town)) + 
    geom_point()