[adegenet-forum] labeling individuals in scatter pot

Nicolas Dussex nicolas.dussex at gmail.com
Mon May 4 04:52:46 CEST 2015


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> 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 [
> adegenet-forum-bounces at lists.r-forge.r-project.org] on behalf of Nicolas
> Dussex [nicolas.dussex at gmail.com]
> *Sent:* 30 April 2015 23:48
> *To:* pablo fresia; 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> wrote:
>
>>  Thanks Pablo, seems to be working!
>>
>>  Nic
>>
>> On 30 April 2015 at 14:28, pablo fresia <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> 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> 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> 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> 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
>>>>>>>>>
>>>>>>>>> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/adegenet-forum/attachments/20150504/4e25d4db/attachment-0001.html>


More information about the adegenet-forum mailing list