在系统发育上绘制特征

Plotting Traits on a Phylogeny

我正在关注这个 guide 如何将性状绘制到系统发育上以确定性状保守性。我一步一步地遵循它,但似乎无法让系统发育的群落组成或特征图对我的数据集起作用。我按照他们说的格式化了,看起来就像他们发送给我的示例数据一样。

我不确定如何将树文件放在这里所以这里有一个在云端 link 用于 all species and here is a tree that I used just for my native species 用于特征绘图

VegComm <- df2vec(as.matrix(Veg2018), colID = 1:29)  #community data


STraits <- read.csv()
rownames(STraits)<- STraits[,1]
STraits[1:1] <- list(NULL)    #Trait Data



STraits <- df2vec(as.matrix.data.frame(STraits), colID=1:5)

STraits <- STraits[1:6,]
str(STraits)

prune.sample(VegComm,alltree)

par(mfrow=c(2,2))
for (i in colnames(STraits)) {
+ plot(nativetree, show.tip.label=TRUE, main=i)
+ tiplabels(pch=22, col=STraits[,i]+1, bg=STraits[,i]+1, cex=1.5)}

traits <- STraits[nativetree$tip.label,]

phylosignal(nativetree, STraits, nsim=1000, method="K")

这是社区数据:

    Avena_fatua Bromus_diandrus Bromus_hordeaceus   Festuca_myuros  Festuca_perennis    Carduus_pycnocephalus   Cirsium_vulgare Erodium_cicutarium  Geranium_dissectum  Helminthotheca_echioides    Lactuca_serriola    Medicago_polymorpha Oxalis_pes-caprae   Raphanus_sativus    Senecio_vulgaris    Sonchus_oleraceus   Vicia_sativa    Artemisia_californica   Baccharis_pilularis Ericameria_ericoides    Mimulus_aurantiacus Bromus_carinatus    Elymus_triticoides  Hordeum_brachyantherum  Stipa_pulchra   Achillea_millefolium    Eschscholzia_californica    Lupinus_variicolor  Echium_candicans
PC1 0   1.25    0   20.83333333 7.416666667 0.5 0   0   21.25   0.333333333 0   6.916666667 0   4.916666667 0   0   0   4.583333333 18.33333333 1.25    0.833333333 0.5 0   0   0   7.5 1.25    0   0
PC2 0.5 0   0.333333333 14.16666667 2.25    0   0   0   25  0   1.916666667 30.41666667 0   3.666666667 0.833333333 0.833333333 0   0   17.91666667 0   0   2.083333333 0   0   0   3.333333333 0   0   0
PC3 0.333333333 4.083333333 0   27.5    3.333333333 6.083333333 0   0   15.83333333 1.75    2.416666667 3.833333333 0   6.666666667 0   5.916666667 0   1.25    2.083333333 0   2.5 5.416666667 0   0   1.25    5   0   0   0
PC4 0.333333333 1.25    3.333333333 10.41666667 15.83333333 5.833333333 0   0   25.83333333 0   1.583333333 10.75   0   5.833333333 0   1.25    0   0   2.083333333 0   0   0   0   0   0   3.416666667 2.916666667 0   0
PC5 1.916666667 0   8.833333333 10.91666667 6.666666667 0   0.333333333 0   15  1.25    1.75    0   0   3.333333333 0   10.83333333 0.5 0   3.333333333 0.5 0   4.666666667 0   0   0.5 9.166666667 0   0   0.666666667
PS1 0.333333333 3   0   6.25    2.25    16  0   0   11.41666667 0.333333333 0   3.833333333 0   0.833333333 0   1.166666667 0   0   12  0   0.166666667 3.333333333 0   0   0   49.16666667 0   0   0
PS2 2.25    4   0   6.5 1.25    13.75   0   4.166666667 10.5    0   0   6.666666667 0   4.5 0   0   0   1.583333333 3.833333333 0   4.166666667 4.166666667 0   0   1.25    22.91666667 1.25    0   0
PS3 2.5 0   0   5.083333333 1.25    0.833333333 0   5.916666667 20.83333333 0   0   16.66666667 0   7.583333333 0   1.333333333 0   0   4.5 0   0   0.333333333 0   0   1.75    25.41666667 0   0   0
PS4 2.25    0   1.5 2.5 1.75    0   2.5 0   22.91666667 0   0   19.16666667 2.916666667 18.33333333 0   0   0   2.916666667 6.666666667 0   1.25    5.5 0   0   4.583333333 8.75    0   2.5 0
PS5 4.75    0   1.75    7   2.083333333 4.666666667 0   0   18.08333333 0   0   4.25    0   13.75   0   0   0   0   0   0   0   0   0   0   0   34.33333333 0   0   0
PW1 4.75    1.75    0.666666667 11.83333333 4.916666667 0   0   0   15  2.833333333 1.25    39.16666667 0   0.666666667 0   3.833333333 0   0   4.166666667 0   0   0.833333333 0   0   0   14.16666667 0.666666667 0   1.25
PW2 2.5 0   4   21.66666667 4.666666667 0.5 0   0   25.41666667 0   1.25    7.083333333 0   14.58333333 0   0.833333333 0   1.25    1.25    0   0   3.333333333 0   0   1.25    4.166666667 1   0   0
PW3 1.583333333 1.25    0   10.66666667 4.25    5.75    0   0   12.5    0   1.5 30  0   0.333333333 0   0.333333333 0   3.833333333 0   0   0   2.083333333 0   0   4.583333333 10  0   0   0
PW4 0   1.25    6.666666667 9.916666667 8.25    0   0   0   33.33333333 0   0   5.833333333 0   5.833333333 0   2.083333333 0   0   1.25    0   0   2.5 0   0   0   3.75    1.583333333 0   0
PW5 2.25    2.083333333 0.333333333 10.41666667 4.416666667 1.25    0   0   23.33333333 0   0   4.583333333 0   5.083333333 0   0   13.33333333 12.66666667 8.333333333 0   0   0   0   0   0   12  0   0   0

这是特征数据:(我试过省略和不省略 NA)

    Growth_Rate Area    AreaVar SLA SLAVar  VLA VLAVar  Thickness   ThicknessVar    logThickness    logThicknessVar LV  LVVar   PD0 PD10    PD50    CPD
Achillea_millefolium    0.090888257 15.80656659 12.43783158 NA  NA  NA  NA  0.249744167 0.187092582 -1.553441666    0.458076381 NA  NA  12.61566    29.016  250 0.721921544
Artemisia_californica   0.035049437 14.56355219 11.78670881 180.1322546 99.50427931 9.364236482 1.414207935 0.268703703 0.074128238 -1.352780779    0.298806173 43.22157529 13.35296757 12.61566    29.016  250 0.721921544
Bromus_carinatus    0.022607407 2.384166667 2.316140235 NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  5.41269 11.7111 315.3334    0.681203858
Ericameria_ericoides    0.019809977 3.6875  1.703521078 NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  12.61566    29.016  250 0.721921544
Eschscholzia_californica    0.029380702 1.245833333 1.076820745 262.1630059 60.49033956 4.392284625 0.596306575 0.16357684  0.038660691 -1.835819399    0.223972815 39.80718218 11.25985865 294 294 294 0.577356321
Hosackia_gracilis   0.009183502 NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  41.81336    101.22  250 0.638988811
Lupinus_nanus   0.040867178 NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  33.60001    101.22  250 0.640373244
Lupinus_variicolor  0.028428463 NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  33.60001    101.22  250 0.640373244
Mimulus_aurantiacus 0.00652489  0.00652489  0.011364841 3.412857143 2.976064883 151.5001201 79.68333552 2.370279914 0.731201273 0.285257143 0.120154396 37.54090305 16.93270863 183.7778    209.3333    250 0.622318052
Sisyrinchium_bellum 0.01441308  5.477777778 5.117901992 181.6818246 42.91299583 2.954769874 0.448780843 0.176855556 0.018545802 -1.735344864    0.107673785 31.80493389 4.311588188 225.2889    225.2889    315.3334    0.594958509
Sidalcea_malviflora 0.020075948 4.974358974 4.901863202 142.4036892 39.11274955 1.651824981 0.295753475 0.148082051 0.045211395 -1.953346759    0.300665842 20.91557187 8.108682659 163.3333    193 250 0.625836637
Stipa_pulchra   0.01546666  5.28968254  6.055307558 122.3827137 32.67582669 7.352684101 3.027753522 0.149629537 0.031130015 -1.943799376    0.210327301 17.91978995 5.823172424 24  24  315.3334    0.611910294

这里是 dput 输出:

> dput(STraits)
structure(c(0.035049437, 0.029380702, 0.00652489, 0.01441308, 
0.020075948, 0.01546666, 14.56355219, 1.245833333, 0.00652489, 
5.477777778, 4.974358974, 5.28968254, 11.78670881, 1.076820745, 
0.011364841, 5.117901992, 4.901863202, 6.055307558, 180.1322546, 
262.1630059, 3.412857143, 181.6818246, 142.4036892, 122.3827137, 
99.50427931, 60.49033956, 2.976064883, 42.91299583, 39.11274955, 
32.67582669), .Dim = c(6L, 5L), .Dimnames = list(c("Artemisia_californica", 
"Eschscholzia_californica", "Mimulus_aurantiacus", "Sisyrinchium_bellum", 
"Sidalcea_malviflora", "Stipa_pulchra"), c("Growth_Rate", "Area", 
"AreaVar", "SLA", "SLAVar")))

> dput(VegComm)
structure(list(Avena_fatua = c(0, 0.5, 0.333333333, 0.333333333, 
1.916666667, 0.333333333, 2.25, 2.5, 2.25, 4.75, 4.75, 2.5, 1.583333333, 
0, 2.25), Bromus_diandrus = c(1.25, 0, 4.083333333, 1.25, 0, 
3, 4, 0, 0, 0, 1.75, 0, 1.25, 1.25, 2.083333333), Bromus_hordeaceus = c(0, 
0.333333333, 0, 3.333333333, 8.833333333, 0, 0, 0, 1.5, 1.75, 
0.666666667, 4, 0, 6.666666667, 0.333333333), Festuca_myuros = c(20.83333333, 
14.16666667, 27.5, 10.41666667, 10.91666667, 6.25, 6.5, 5.083333333, 
2.5, 7, 11.83333333, 21.66666667, 10.66666667, 9.916666667, 10.41666667
), Festuca_perennis = c(7.416666667, 2.25, 3.333333333, 15.83333333, 
6.666666667, 2.25, 1.25, 1.25, 1.75, 2.083333333, 4.916666667, 
4.666666667, 4.25, 8.25, 4.416666667), Carduus_pycnocephalus = c(0.5, 
0, 6.083333333, 5.833333333, 0, 16, 13.75, 0.833333333, 0, 4.666666667, 
0, 0.5, 5.75, 0, 1.25), Cirsium_vulgare = c(0, 0, 0, 0, 0.333333333, 
0, 0, 0, 2.5, 0, 0, 0, 0, 0, 0), Erodium_cicutarium = c(0, 0, 
0, 0, 0, 0, 4.166666667, 5.916666667, 0, 0, 0, 0, 0, 0, 0), Geranium_dissectum = c(21.25, 
25, 15.83333333, 25.83333333, 15, 11.41666667, 10.5, 20.83333333, 
22.91666667, 18.08333333, 15, 25.41666667, 12.5, 33.33333333, 
23.33333333), Helminthotheca_echioides = c(0.333333333, 0, 1.75, 
0, 1.25, 0.333333333, 0, 0, 0, 0, 2.833333333, 0, 0, 0, 0), Lactuca_serriola = c(0, 
1.916666667, 2.416666667, 1.583333333, 1.75, 0, 0, 0, 0, 0, 1.25, 
1.25, 1.5, 0, 0), Medicago_polymorpha = c(6.916666667, 30.41666667, 
3.833333333, 10.75, 0, 3.833333333, 6.666666667, 16.66666667, 
19.16666667, 4.25, 39.16666667, 7.083333333, 30, 5.833333333, 
4.583333333), Oxalis_pes.caprae = c(0, 0, 0, 0, 0, 0, 0, 0, 2.916666667, 
0, 0, 0, 0, 0, 0), Raphanus_sativus = c(4.916666667, 3.666666667, 
6.666666667, 5.833333333, 3.333333333, 0.833333333, 4.5, 7.583333333, 
18.33333333, 13.75, 0.666666667, 14.58333333, 0.333333333, 5.833333333, 
5.083333333), Senecio_vulgaris = c(0, 0.833333333, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0), Sonchus_oleraceus = c(0, 0.833333333, 
5.916666667, 1.25, 10.83333333, 1.166666667, 0, 1.333333333, 
0, 0, 3.833333333, 0.833333333, 0.333333333, 2.083333333, 0), 
    Vicia_sativa = c(0, 0, 0, 0, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 13.33333333), Artemisia_californica = c(4.583333333, 0, 
    1.25, 0, 0, 0, 1.583333333, 0, 2.916666667, 0, 0, 1.25, 3.833333333, 
    0, 12.66666667), Baccharis_pilularis = c(18.33333333, 17.91666667, 
    2.083333333, 2.083333333, 3.333333333, 12, 3.833333333, 4.5, 
    6.666666667, 0, 4.166666667, 1.25, 0, 1.25, 8.333333333), 
    Ericameria_ericoides = c(1.25, 0, 0, 0, 0.5, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0), Mimulus_aurantiacus = c(0.833333333, 0, 
    2.5, 0, 0, 0.166666667, 4.166666667, 0, 1.25, 0, 0, 0, 0, 
    0, 0), Bromus_carinatus = c(0.5, 2.083333333, 5.416666667, 
    0, 4.666666667, 3.333333333, 4.166666667, 0.333333333, 5.5, 
    0, 0.833333333, 3.333333333, 2.083333333, 2.5, 0), Elymus_triticoides = c(0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), 
    Hordeum_brachyantherum = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L), Stipa_pulchra = c(0, 0, 1.25, 
    0, 0.5, 0, 1.25, 1.75, 4.583333333, 0, 0, 1.25, 4.583333333, 
    0, 0), Achillea_millefolium = c(7.5, 3.333333333, 5, 3.416666667, 
    9.166666667, 49.16666667, 22.91666667, 25.41666667, 8.75, 
    34.33333333, 14.16666667, 4.166666667, 10, 3.75, 12), Eschscholzia_californica = c(1.25, 
    0, 0, 2.916666667, 0, 0, 1.25, 0, 0, 0, 0.666666667, 1, 0, 
    1.583333333, 0), Lupinus_variicolor = c(0, 0, 0, 0, 0, 0, 
    0, 0, 2.5, 0, 0, 0, 0, 0, 0), Echium_candicans = c(0, 0, 
    0, 0, 0.666666667, 0, 0, 0, 0, 0, 1.25, 0, 0, 0, 0)), .Names = c("Avena_fatua", 
"Bromus_diandrus", "Bromus_hordeaceus", "Festuca_myuros", "Festuca_perennis", 
"Carduus_pycnocephalus", "Cirsium_vulgare", "Erodium_cicutarium", 
"Geranium_dissectum", "Helminthotheca_echioides", "Lactuca_serriola", 
"Medicago_polymorpha", "Oxalis_pes.caprae", "Raphanus_sativus", 
"Senecio_vulgaris", "Sonchus_oleraceus", "Vicia_sativa", "Artemisia_californica", 
"Baccharis_pilularis", "Ericameria_ericoides", "Mimulus_aurantiacus", 
"Bromus_carinatus", "Elymus_triticoides", "Hordeum_brachyantherum", 
"Stipa_pulchra", "Achillea_millefolium", "Eschscholzia_californica", 
"Lupinus_variicolor", "Echium_candicans"), row.names = c("PC1", 
"PC2", "PC3", "PC4", "PC5", "PS1", "PS2", "PS3", "PS4", "PS5", 
"PW1", "PW2", "PW3", "PW4", "PW5"), class = "data.frame")

> dput(nativetree)
structure(list(edge = structure(c(12L, 13L, 14L, 15L, 16L, 16L, 
15L, 14L, 17L, 18L, 18L, 19L, 19L, 17L, 13L, 12L, 20L, 21L, 21L, 
20L, 13L, 14L, 15L, 16L, 1L, 2L, 3L, 17L, 18L, 4L, 19L, 5L, 6L, 
7L, 8L, 20L, 21L, 9L, 10L, 11L), .Dim = c(20L, 2L)), edge.length = c(7.629639, 
22, 20.333344, 93.62796, 11.038696, 11.038696, 104.666656, 28.5, 
62.899994, 33.600006, 16.800003, 16.800003, 16.800003, 96.5, 
147, 41.985199, 51.760712, 60.883728, 60.883728, 112.64444), 
    Nnode = 10L, node.label = c("", "eudicots", "", "euasterids", 
    "", "eurosids", "mesopapilionoideaeclade", "lupinus", "", 
    ""), tip.label = c("achillea_millefolium", "ericameria_ericoides", 
    "mimulus_aurantiacus", "hosackia_gracilis", "lupinus_nanus", 
    "lupinus_variicolor", "sidalcea_malviflora", "eschscholzia_californica", 
    "bromus_carinatus", "nassella_pulchra", "sisyrinchium_bellum"
    ), root.edge = 291.370361), .Names = c("edge", "edge.length", 
"Nnode", "node.label", "tip.label", "root.edge"), class = "phylo", order = "cladewise")

问题是 STraitsnativetree 之间的物种名称不匹配。

intersect(row.names(STraits), nativetree$tip.label)
# character(0)

R 区分大小写,因此树中的小写名称不会被识别为与数据矩阵中的大写名称相同。此外,物种的名称也不同。

名称正确匹配后,需要按上述方式对特征进行排序:

traits <- STraits[nativetree$tip.label,]

以及根据每列新的traitstable计算的系统发育信号:

library(picante)
res = data.frame()
for(i in 1:ncol(traits)){
  res[i, ] = phylosignal(x = traits[, i], phy = nativetree, reps = 999)
}

请注意,我使用的是您随 dput 提供的数据,而不是脚本隐含的修改。此外,检查 ?phylosignal 语法。

可以使用 phytools 包在系统发育图上绘制连续字符,如图 here 所示。