tinder
tinder

Reputation: 35

Trouble producing discrete legend using ggplot for a scatterplot

I am fairly new to the ggplot function in R. Currently, I am struggling to produce a legend for a given data set that I have constructed by hand. For simplicity, suppose this was my data set:

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

Now, using ggplot, I am trying to figure out how to produce a legend on a scatterplot. So far I have done the following:

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

I produce the following using the above code,

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

I learned that to color coordinates, I would have needed to use the argument colour=rawdata[,1] in the geom_point function to color in points. However, when I try this, I get the following error code:

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

I understand that this has something to do with the length of the vector, but as of right now, I have absolutely no idea how to tackle this small problem.

Upvotes: 1

Views: 71

Answers (1)

SymbolixAU
SymbolixAU

Reputation: 26258

geom_point() takes a colour, not a fill. And, having passed the data into ggplot(data = ..), there's no need to then pass it into the geom_point() again.

I've also fixed an error in the creation of your df in your example.

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

Upvotes: 1

Related Questions