[adegenet-forum] labeling individuals in scatter pot
Jombart, Thibaut
t.jombart at imperial.ac.uk
Tue May 5 12:16:36 CEST 2015
Hi there,
to specify which pch / color you want to use, define them as a factor, specify the levels corresponding to pch / colour wanted, and then use 'as.character(youFactor)'.
Cheers
Thibaut
________________________________________
From: Nicolas Dussex [nicolas.dussex at gmail.com]
Sent: 04 May 2015 03:52
To: Jombart, Thibaut
Cc: pablo fresia; adegenet-forum at lists.r-forge.r-project.org
Subject: Re: [adegenet-forum] labeling individuals in scatter pot
Hi Thibaut.
Thanks for that,
I tried something similar to your first example:
Z1<-read.genepop("batch_1.genepop_6M.gen",missing=0,quiet=FALSE)
dapc1 <- dapc(Z1, n.pca = 15, n.da = 10)
scatter(dapc1, pch="", scree.da=FALSE,cell=0, cstar=0,label=NULL, leg = TRUE,txt.leg = c("233","287","418","674","878","957","1085"))
par(xpd=TRUE)
morph_data_6M<-read.table("morph_data_6M.txt", header=T)
morph<-morph_data_6M[,1]
points(dapc1$ind.coord, pch=as.integer(morph),col=as.integer(dapc1$grp), lwd=2)
It works fine, however I don't really know how to have the colours of my points matching the ones in my lengend, nor how to change the shape of the points.
Thanks a lot for your help!
Nic
On 1 May 2015 at 20:24, Jombart, Thibaut <t.jombart at imperial.ac.uk<mailto:t.jombart at imperial.ac.uk>> wrote:
Hi there,
I went through the email trail quickly, but I think you need something along the lines of:
####
library(adegenet)
example(dapc)
morpho <- factor(sample(letters[1:6], nrow(dapc1$ind.coord), replace=TRUE))
scatter(dapc1, pch="", scree.da=FALSE)
par(xpd=TRUE)
points(dapc1$ind.coord, pch=as.integer(morpho))
####
Otherwise ggplot2 offers good alternatives:
####
> dat <- data.frame(dapc1$ind.coord, group=factor(dapc1$grp), morpho)
> head(dat)
LD1 LD2 LD3 LD4 LD5 LD6
AFBIBOR9503 5.398012 -5.9154641 0.30329146 -0.5874714 -0.8290345 -0.26056227
AFBIBOR9504 3.697040 -3.8046570 -0.09263061 -0.5967574 -0.5017393 1.88135969
AFBIBOR9505 5.496883 0.9354478 0.61307612 -0.1419224 -2.6534069 -0.24431807
AFBIBOR9506 5.538440 -2.6152434 0.80186922 0.3334149 -1.6202109 0.06381506
AFBIBOR9507 5.258127 -1.6598447 0.21333638 -1.3799890 -0.1550098 1.77052354
AFBIBOR9508 6.381482 0.5563613 0.42597354 -1.0441841 -1.0207730 -0.04500107
LD7 LD8 LD9 LD10 LD11
AFBIBOR9503 -0.07016765 -1.1810082 -1.0765799 -0.389844937 -0.4576461
AFBIBOR9504 1.68135006 1.5462166 -1.4605117 -0.732729892 -1.5683318
AFBIBOR9505 -0.28373085 0.4224500 -1.5026889 -0.495831033 1.8832038
AFBIBOR9506 0.83341513 -0.857079e-6 -0.4147484 1.304984340 -0.2535325
AFBIBOR9507 -0.23776197 0.3483954 -0.7429532 0.003968628 0.6304628
AFBIBOR9508 0.78436225 -0.2455169 -1.9580097 -0.022258198 -1.0614034
LD12 LD13 LD14 group morpho
AFBIBOR9503 -1.1221279 2.0025634 0.2963844 Borgou a
AFBIBOR9504 0.4286541 -1.0477615 0.7572506 Borgou d
AFBIBOR9505 0.7906680 0.8864259 -2.0664313 Borgou b
AFBIBOR9506 -0.9793516 0.8136440 -0.3757589 Borgou c
AFBIBOR9507 -1.2099940 -0.0540738 1.3394422 Borgou c
AFBIBOR9508 -2.0181906 1.6781495 0.2876485 Borgou c
> library(ggplot2)
> ggplot(dat, aes(x=LD1, y=LD2)) + geom_point(aes(color=group, shape=morpho))
####
Cheers
Thibaut
________________________________
From: adegenet-forum-bounces at lists.r-forge.r-project.org<mailto:adegenet-forum-bounces at lists.r-forge.r-project.org> [adegenet-forum-bounces at lists.r-forge.r-project.org<mailto:adegenet-forum-bounces at lists.r-forge.r-project.org>] on behalf of Nicolas Dussex [nicolas.dussex at gmail.com<mailto:nicolas.dussex at gmail.com>]
Sent: 30 April 2015 23:48
To: pablo fresia; adegenet-forum at lists.r-forge.r-project.org<mailto:adegenet-forum at lists.r-forge.r-project.org>
Subject: Re: [adegenet-forum] labeling individuals in scatter pot
humm.. I realise that it's gonna be difficult to do that with my 300+ samples so if someone has other suggestions, that would be fantastic.
Cheers
Nic
On 1 May 2015 at 10:05, Nicolas Dussex <nicolas.dussex at gmail.com<mailto:nicolas.dussex at gmail.com>> wrote:
Thanks Pablo, seems to be working!
Nic
On 30 April 2015 at 14:28, pablo fresia <pfresia at gmail.com<mailto:pfresia at gmail.com>> wrote:
... the errors are probably because of the bounds within [..., ...]
I got this error message now:
> points(dapc1$ind.coord[1:90,],
+ pch=17, cex=1, col="black")
Error in dapc1$ind.coord[1:90, ] : subscript out of bounds
> par(xpd=TRUE)
> points(dapc1$ind.coord[91:218,],
+ pch=18, cex=1.4, col="black")
Error in dapc1$ind.coord[91:218, ] : subscript out of bounds
> par(xpd=TRUE)
> points(dapc1$ind.coord[219:326,],
+ pch=21, cex=1, col="black")
Error in dapc1$ind.coord[219:326, ] : subscript out of bounds
> par(xpd=TRUE)
> points(dapc1$ind.coord[327:392,],
+ pch=20, cex=1.3, col="black")
Error in dapc1$ind.coord[327:392, ] : subscript out of bounds
I thought about sorting indviduals by morphotype, but not sure how to do it as I want to keep the population info too. My samples are grouped by population at this stage.
... mixing both approaches may be you find a way. I figure, if you keep the inds organized by pop but dividing it by morphotype you can assign colors and symbols in the way you need.
eg. pop 1: 1 to 30 inds, 1-15 morph 1 and 16-30 morph 2:
> points(dapc1$ind.coord[1:15,], pch=17, cex=1, col="black")
> points(dapc1$ind.coord[16:30,], pch=18, cex=1, col="black")
and so on...
If I run this:
scatter(dapc1, cstar=0,cex=2.5, cell=0, label=NULL, leg = TRUE,scree.da=FALSE,txt.leg = c("233","287","418","674","878","957","1085")) #pch=c)#col = myCol)
par(new=TRUE)
df <- data.frame(x = dapc1$ind.coord[,1], y = dapc1$ind.coord[,2])
morph_data_6m<-read.table("morph_data_6m.txt", header=T)
c<-morph_data_6m[,1]
s.label(dfxy = df, xax=1, yax=2, label=c,clabel=0.7,boxes=FALSE,grid=FALSE, addaxes=FALSE)
I obtain a plot of coloured dots corresponding to each population and I then add the morphotype label (W, WR or X; from my "moprh_data_6m.txt" file) on top of each dot, but it gets difficult to read when dots overlap (see example attached)
best
pablo
On 30 April 2015 at 13:53, pablo fresia <pfresia at gmail.com<mailto:pfresia at gmail.com>> wrote:
... maybe, the individuals needs to be by organized morphotype before to run the DAPC.
On 29 April 2015 at 22:49, pablo fresia <pfresia at gmail.com<mailto:pfresia at gmail.com>> wrote:
Hi Nic,
an error, should be here
> myCol <- c("darkblue","darkgreen","red")
> scatter(dapc1, scree.da=FALSE, bg="white", pch=20, solid=.4, cex=0, cstar=1, clab=1, col=myCol)
> par(xpd=TRUE)
> points(dapc1$ind.coord[1:90,],
+ pch=17, cex=1, col="black")
Error in dapc$ind.coord : object of type 'closure' is not subsettable
> par(xpd=TRUE)
> points(dapc1$ind.coord[91:218,],
+ pch=18, cex=1.4, col="black")
Error in dapc$ind.coord : object of type 'closure' is not subsettable
> par(xpd=TRUE)
> points(dapc1$ind.coord[219:326,],
+ pch=21, cex=1, col="black")
Error in dapc$ind.coord : object of type 'closure' is not subsettable
> par(xpd=TRUE)
> points(dapc1$ind.coord[327:392,],
+ pch=20, cex=1.3, col="black")
Error in dapc$ind.coord : object of type 'closure' is not subsettable
cheers,
pablo
On 30 April 2015 at 13:03, pablo fresia <pfresia at gmail.com<mailto:pfresia at gmail.com>> wrote:
Hi Nicolas,
what's going on, if you try something like this below ?
myCol <- c("darkblue","darkgreen","red")
scatter(dapc, scree.da=FALSE, bg="white", pch=20, solid=.4, cex=0, cstar=1, clab=1, col=myCol)
par(xpd=TRUE)
points(dapc$ind.coord[1:90,],
pch=17, cex=1, col="black")
par(xpd=TRUE)
points(dapc$ind.coord[91:218,],
pch=18, cex=1.4, col="black")
par(xpd=TRUE)
points(dapc$ind.coord[219:326,],
pch=21, cex=1, col="black")
par(xpd=TRUE)
points(dapc$ind.coord[327:392,],
pch=20, cex=1.3, col="black")
good luck!
pablo
On 29 April 2015 at 21:50, Nicolas Dussex <nicolas.dussex at gmail.com<mailto:nicolas.dussex at gmail.com>> wrote:
Hi,
I am doing a DAPC for a dataset that contains 6 populations. Among all my samples, there are three different morphs and each population contains a variable mixture of each. What I want to do is to use a different color for each population (I managed to do it) and use a different type of point for each sample according to its moprhotype. I have a file that contains this info ( 1 colomn with either X, W or WR).
I tried using pch as described below, but the labels do not correspond to the individuals.
dapc1 <- dapc(Z1, n.pca = 10, n.da = 3)
c<-morph_data_6m[,1]
scatter(dapc1, cstar=0,cex=2.5, cell=0, label=NULL, leg = TRUE,scree.da=FALSE,txt.leg = c("233","287","418","674","878","957","1085"), pch=c)
Would there be a way to assign to each individual a type of point corresponding to its morphotype? Say point for W, star for X and triangle for WR.
Thanks for your help!
Nic
--
Nic Dussex PhD
Department of Zoology
University of Otago
340 Great King Street
P.O.Box 56
Dunedin 9054
New Zealand
Mobile: +64 21 02790938
_______________________________________________
adegenet-forum mailing list
adegenet-forum at lists.r-forge.r-project.org<mailto:adegenet-forum at lists.r-forge.r-project.org>
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/adegenet-forum
--
Nic Dussex PhD
Department of Zoology
University of Otago
340 Great King Street
P.O.Box 56
Dunedin 9054
New Zealand
Mobile: +64 21 02790938
--
Nic Dussex PhD
Department of Zoology
University of Otago
340 Great King Street
P.O.Box 56
Dunedin 9054
New Zealand
Mobile: +64 21 02790938
--
Nic Dussex PhD
Department of Zoology
University of Otago
340 Great King Street
P.O.Box 56
Dunedin 9054
New Zealand
Mobile: +64 21 02790938
--
Nic Dussex PhD
Department of Zoology
University of Otago
340 Great King Street
P.O.Box 56
Dunedin 9054
New Zealand
Mobile: +64 21 02790938
--
Nic Dussex PhD
Department of Zoology
University of Otago
340 Great King Street
P.O.Box 56
Dunedin 9054
New Zealand
Mobile: +64 21 02790938
More information about the adegenet-forum
mailing list