Skip to content

Instantly share code, notes, and snippets.

@ibartomeus
Last active December 14, 2015 02:19
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save ibartomeus/5012739 to your computer and use it in GitHub Desktop.
Plot the quantity/quality pollination landscapes for tomato bee visitors in R. Inspired in Pedro Jordano's lab work (Schupp EW, Jordano P, Gómez JM (2010) New Phytol 188:333–353) https://github.com/pedroj/effectiveness
library(plotrix)
#manually enter data
d <- data.frame(
Bee_group = c("Bombus", "Dark", "Green", "Lasioglossum"),
Efficiency = c(106.86207, 81.50000, 80.66667, 59.27586),
Eff_SE = c(15.56551, 20.12130, 17.97529, 12.25689),
Visitation = c(2.8333333, 0.2222222, 2.2222222, 5.6666667),
Visit_SE = c(0.8333333, 0.1008317, 0.7119684, 1.0966378)
)
#create a grid with value x (visitation), y (efficiency) and z = x*y.
grid = expand.grid(list(x=seq(0, 8, 0.1), y=seq(0, 175, 1)))
grid$z = grid$x * grid$y
#use loess to have z in a matrix format.
total.loess = loess(data=grid, z ~ x * y, degree=2, span=0.01)
z = predict(total.loess, newdata = grid)
#Plot the surface
image(seq(0, 8, 0.1), seq(0, 175, 1), z,
xlab = "", ylab = "",
main = "Tomato pollination landscape", col = sort(heat.colors(10, 0.5), decreasing= TRUE), las = 1)
box()
#Plot the position of the different groups on top
par(new = TRUE)
x = c(0,8)
y = c(0,175)
plot(x,y, type = "n",axes= FALSE, ylab = "Quality", xlab = "Quantity",
las = 1, xlim = c(0.1,7.9), ylim = c(0.1,174))
for(i in 1:4){
arrows(d[i,4]-d[i,5],d[i,2],d[i,4]+d[i,5],d[i,2],
length=.05,angle=90,code=3, col = i)
arrows(d[i,4],d[i,2]+d[i,3],d[i,4],d[i,2]-d[i,3],
length=.05,angle=90,code=3, col = i)
#alternative with elipses
#draw.ellipse(d[i,4],d[i,2], a = d[i,5], b = d[i,3], border = i,
# col = NULL, lty = 1, lwd = 1)
}
legend(x= 5 ,y= 175 ,legend= d[,1], lty= 1, col= c(1:4), cex = 0.7)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment