rplotrda

How do I exclude parameters from an RDA plot


I'm still relatively inexperienced manipulating plots in R, and am in need of assistance. I ran a redundancy analysis in R using the rda() function, but now I need to simplify the figure to exclude unnecessary information. The code I'm currently using is:

abio1516<-read.csv("1516 descriptors.csv")
attach(abio1516)
bio1516<-read.csv("1516habund.csv")
attach(bio1516)
rda1516<-rda(bio1516[,2:18],abio1516[,2:6])

anova(rda1516)
RsquareAdj(rda1516)
summary(rda1516)

  varpart(bio1516[,2:18],~Distance_to_source,~Depth, ~Veg._cover, ~Surface_area,data=abio1516)
plot(rda1516,bty="n",xaxt="n",yaxt="n",main="1516; P=, R^2=",
     ylab="Driven by , Var explained=",xlab="Driven by , Var explained=")

The produced plot looks like this: rda plot

Please help me modify my code to: exclude the sites (sit#), all axes, and the internal dashed lines.

I'd also like to either expand the size of the field, or move the vector labels to all fit in the plotting field.

updated as per responses, working code below this point

plot(rda,bty="n",xaxt="n",yaxt="n",type="n",main="xxx",ylab="xxx",xlab="xxx
Overall best:xxx")

abline(h=0,v=0,col="white",lwd=3)
points(rda,display="species",col="blue")
points(rda,display="cn",col="black")
text(rda,display="cn",col="black")

enter image description here


Solution

  • Start by plotting the rda with type = "n" which generates an empty plot to which you can add the things you want. The dotted lines are hard coded into the plot.cca function, so you need either make your own version, or use abline to hide them (then use box to cover up the holes in the axes).

    require(vegan)
    data(dune, dune.env)
    rda1516 <- rda(dune~., data = dune.env)
    
    plot(rda1516, type = "n")
    abline(h = 0, v = 0, col = "white", lwd = 3)
    box()
    points(rda1516, display = "species")
    points(rda1516, display = "cn", col = "blue")
    text(rda1516, display = "cn", col = "blue")
    

    If the text labels are not in the correct position, you can use the argument pos to move them (make a vector as long as the number of arrows you have with the integers 1 - 4 to move the label down, left, up, or right. (there might be better solutions to this)