Reputation: 2825
I am trying to put the legend outside the plot using xpd=TRUE
but the legend keeps plotting within the plot. How can I fix this?
x = c(0,0,1,1,1)
y = c(0.4991,1.1423,1.2258,1.158,0.5148)
dat<-cbind(x,y)
point_shape = c(10,15,10,15,1)
dat<-data.frame(x,y,point_shape)
myTicks<-c(0,1)
plot(dat[,1],dat[,2], yaxt="n", xaxt="n", xlab="", ylab="",pch = dat$point_shape)
abline(0.4991,0.7267)
abline(1.1423,0.0157)
abline(0.4991,0.0157,lty=2)
axis(side = 1, at = myTicks)
axis(side = 2, at = myTicks)
legend("bottomleft", legend = c("apple", "orange", "tree"),
bty = "n", xpd=FALSE, mar(c(7,7,7,7)), cex = 1, pch = c(10, 15, 1))
Upvotes: 4
Views: 19079
Reputation: 2143
Use inset and make xpd to true
legend("bottomleft", legend = c("apple", "orange", "tree"), inset=c(-0.15,0),
bty = "n", xpd=TRUE, mar(c(7,7,7,7)), cex = 1, pch = c(10, 15, 1))
Upvotes: 9
Reputation: 6469
See the help for legend
:
The location may also be specified by setting x to a single keyword from the list "bottomright", "bottom", "bottomleft", "left", "topleft", "top", "topright", "right" and "center". This places the legend on the inside of the plot frame at the given location.
So you can place the legend outside the plotting region by giving its coordinates manually:
legend(-0.2, 0.3, legend = c("apple", "orange", "tree"),
bty = "n", xpd=TRUE, mar=c(7,7,7,7), cex = 1, pch = c(10, 15, 1))
Upvotes: 1