[R] how to show a plot without overlaying the text on top of the another text?
Jim Lemon
drjimlemon at gmail.com
Thu Dec 15 23:27:08 CET 2016
Hi Marna,
After a bit of experimenting I came up with the following function
that "flags" each point to be labeled an allows the operator to
manually place the label for that point:
placeLabels<-function(x,y,labels,pointer=TRUE,cex=1,labelcol=par("fg"),
labelbg="white",border=par("fg"),pointercol=par("fg"),
pch=1,col=1,bg="white",flagcol="red") {
nlabels<-length(labels)
if(length(labelcol) < nlabels) labelcol<-rep(labelcol,length.out=nlabels)
if(length(labelbg) < nlabels) labelbg<-rep(labelbg,length.out=nlabels)
if(length(border) < nlabels) border<-rep(border,length.out=nlabels)
if(length(pointercol) < nlabels) pointercol<-rep(pointercol,length.out=nlabels)
if(length(pch) < nlabels) pch<-rep(pch,length.out=nlabels)
if(length(col) < nlabels) col<-rep(col,length.out=nlabels)
if(length(bg) < nlabels) bg<-rep(bg,length.out=nlabels)
for(i in 1:nlabels) {
points(x[i],y[i],pch=19,col=flagcol)
labelxy<-locator(1)
if(pointer)
segments(x[i],y[i],labelxy$x,labelxy$y,col=pointercol[i])
boxed.labels(labelxy$x,labelxy$y,labels[i],
col=labelcol[i],bg=labelbg[i],border=border[i])
points(rep(x[i],2),rep(y[i],2),pch=c(19,pch[i]),
col=c("white",col[i]),bg=c(NA,bg[i]))
}
}
x<-rnorm(10)
y<-rnorm(10)
plot(x,y)
library(plotrix)
placeLabels(x,y,LETTERS[1:10],flagcol="purple")
Jim
On Wed, Dec 14, 2016 at 10:37 AM, Marna Wagley <marna.wagley at gmail.com> wrote:
> Hi R user,
> I have created using metaNMDS (Nonmetirc Multidimensional Scaling, MDS) to
> show species composition but some of the species are concentrated at some
> of the sites so that the name of the species are overlaid and it was
> almost impossible to read the species name in the figure. I was wondering how
> we can show the plot without overlaying the text on top of another.
> I used the following to create the plot. would you mind to suggest me?
>
> comm.bc.mds <- metaMDS(dat, dist = "bray")
> ordiplot(comm.bc.mds, display = "sites", type = "text")
> ordipointlabel(comm.bc.mds,font = c(1, 1), cex = c(0.5, 0.3))
>
> Thanks
>
> MW
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list