赖江山的博客分享 http://blog.sciencenet.cn/u/laijiangshan 生态、统计与R语言

博文

将原始多度数据转化正整数等级数据并制作热图

已有 3499 次阅读 2021-6-2 17:44 |个人分类:RDA|系统分类:科研笔记

将多度数据转为等级数据代码

将多度数据转为等级数据代码

有学员对于能够展示物种在样方多度分布的热图(如下图)很感兴趣(列为样方,行为物种,热图的颜色代表多度),但这个热图需要用到将原始多度数据转化为10以内正整数的等级数据。很多学员不知道怎么转化。其实,将原始多度数据转化等级数据并没有统一的模式,分割点设置具有主观性,如果要让每个等级的数量差不多,可以采用相等分位数进行转化。下面的案例以vegan包的varespec群落数据将原始多度数据转化0-5之间的整数等级数据,然后进行热图的制作。

首先加载包和数据

library(vegan)
data(varespec)

下面的代码全部是以spe作为群落数据,所以读者自己的数据读进来直接赋值给spe即可

spe=varespec
newdata=unlist(spe)
n=5 #期望分为5个等级,可以自己定义等级bin=quantile(newdata[newdata>0],seq(1/n,1,1/n))

如果您不想用分位数进行分割,那就按你自己的想法对此向量进行重新定义切点,接下来的循环是不必变的。 将原始数据赋值给另外一个对象是为了下面做判断用,因为原始数据进行等级转化后就不再有判断功能。

foucus=spe

首先将原始数据大于0全部变为1,然后进行单向赋值。

spe[spe>0]=1for(i in 2:length(bin)){spe[foucus>bin[i-1]]=i}

查看每个等级的数据

table(unlist(spe))
## 
##   0   1   2   3   4   5 
## 442 142 106 122 121 123

进行聚类和热图的制作

spe.ch <-vegdist(spe)
spe.ch.ward <- hclust(spe.ch, method="ward.D")library(gclus)
spe.chwo <- reorder.hclust(spe.ch.ward, spe.ch)
dend <- as.dendrogram(spe.chwo)
or <- vegemite(spe, spe.chwo)#要求物种数据是10以内整数
##                                   
##           2222212111122111    1   
##           127859345630421095648372
##  Betupube 31..1...................
##  Rhodtome 4444......1.............
##  Barbhatc 4.2..11...1.............
##  Polycomm 3.2.22.1................
##  Descflex 444421.............1..1.
##  Hylosple ..551......4............
##  Cladbotr 3.11.11...111...........
##  Vaccmyrt 5555.4.2443.....3.......
##  Dicrsp   31.35...441453..........
##  Ptilcili 5121334.123.1.4.3.2.21.1
##  Peltapht ..1.1.4...1...3.....1...
##  Pleuschr 455555555555555441145124
##  Dicrpoly 4..2.11.13.24.3331....1.
##  Cetrisla 4..11..1121.23333..1....
##  Dicrfusc 354454455544.33343424441
##  Claddefo 42221444444443.333323221
##  Pinusylv 32.112122221344331211..1
##  Pohlnuta 3211.121121243333..1211.
##  Polyjuni 3..2544331113.3334222.31
##  Cladfimb 322222233322.3.332323221
##  Cladcorn 124143442112233333223321
##  Empenigr 555455552545454542545455
##  Vaccviti 555555555555555554545555
##  Cladcris 321112444241133331323221
##  Cladunci 342143454445544333443342
##  Cladgrac 322122423333433.33323331
##  Cladarbu 454255555555445445555554
##  Cladrang 545445545555555545555555
##  Cladsp   .11.1....111....3.111...
##  Callvulg .5.....445512343..3441.1
##  Cladchlo 31...11...1.2..33.1..121
##  Cladcocc .2.122232221..333322222.
##  Vacculig .4421......4.......1445.
##  Nepharct ....5......1........122.
##  Polypili .....11.1..1..3..21.1...
##  Cladstel 534..5122151155554554535
##  Cetreric .1..1..422224..33243111.
##  Stersp   ...12344411.1.43.514434.
##  Cladphyl .......1......333.......
##  Icmaeric .......1.1.......2....1.
##  Cladcerv ....1..............1...1
##  Flavniva .....11........34325223.
##  Diphcomp ....1.....1.....3...443.
##  Cladamau .................1..21..
## 24 sites, 44 species

基于聚类树的双排列群落表格的热图

library(RColorBrewer)
heatmap(t(spe[rev(or$species)]), Rowv=NA, Colv=dend,
    col=c("white", brewer.pal(5,"Greens")), scale="none", margin=c(3,5), 
    ylab="Species (weighted averages of sites)", xlab="Sites")




https://blog.sciencenet.cn/blog-267448-1289400.html

上一篇:如何显示方差分析多重比较的两两比较的p值
下一篇:ggplot2里面的全球地图并添加物种分布的点
收藏 IP: 221.216.116.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 04:26

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部