Elizabeth
Elizabeth

Reputation: 6561

Scale text labels to plot features in r

I have the following plot:

xleft<-c(1,2,2.5)
xright<-c(2,2.5,2.75)
ybottom<-c(1,2,2.5)
ytop<-c(2,2.5,2.75)

par(mar = c(15,15,2.75,2.75) + 0.1)
plot(c(1,2.75),c(1,2.75),type="n",main="title",xlab="site.x",ylab="ylab")
rect(xleft,ybottom,xright,ytop,col=c("blue","red","green"))

#Label position along  axes
x.label.position<-(xleft+xright)/2
y.label.position<-(ybottom+ytop)/2

#Labels
x.label<-c("Long species Name1","Long species Name2","Long species Name3")
y.label<-c("Long species Name4","Long species Name5","Long species Name5")

text(par()$usr[1]-0.5,y.label.position,y.label,xpd=TRUE,adj=1)
text(y=par()$usr[3]-0.5,x=x.label.position,x.label,xpd=TRUE,adj=1,srt=90)

par(xpd=TRUE)
legend(-0.1,0,legend=c("Species A","Species B","Species C"),fill=c("blue", "red", "green"))

enter image description here

Which in reality looks more like this:

enter image description here

Is there a way to scale the text labels to the width of the squares they represent? Thanks for your ideas.

Upvotes: 0

Views: 1318

Answers (1)

Greg Snow
Greg Snow

Reputation: 49640

You can adjust the size using cex or its variants (depending on how you add the text), see ?par for the variants and details. But for the small ones they are likely to be unreadable (as the comments already state).

An alternative is the spread.labs function in the TeachingDemos package.

Upvotes: 1

Related Questions