大家新年快乐呀!好久好久没有写文了。过了一个懒散的新年,现在又要重新投入到科研之中啦。今天欣喜得知之前和师姐一起投的cover居然中了,值得写文纪念一下这个日子。今天来讲一个其实我觉得用处不大的Treemap。
什么是Treemap图
废话不多说,先上一张Treemap图。可以看到一个大矩形按照一定比例被分割成了多个大小不同的小矩形,每个小矩形代表着某一类别,不同颜色代表了不同类别。
没错,这就是Treemap图。Treemap图,也可叫做矩形式树状结构绘图法,又称为矩形式树状结构图绘制法、树状结构矩形图绘制法,指的是一种利用嵌套式矩形来显示树状结构数据的方法。此种呈现方法能以不同颜色区块呈现不同类别,可以透过区块大小看出各类别数值大小比较。当该区块范围越大,代表该类别数值越大、越多。
虽然看似有趣,但是当各类别的差异不明显时,Treemap图难以体现出不同类别的差别,无法像bar图等展现出不同类别的细微差异,不过这种嵌套结构能够更好地展现出多个层级的情况。比如在上图中,绿色的都属于California,因此,可以发现California占比最大,进一步绿色中又是San Jose占比最大。
那么,下面让我们举一个具体的例子。之前,我们介绍过几个搜索文献的数据库,今天我们再次聚焦Web of Science。
Web of Science有一个功能是“Result Analysis”,可以对搜索的结果进行一些简单的分析,比如这一主题近年来的发文趋势、研究方向等。我在Web of Science中搜索了“gut microbiome”,并查看了分析结果中的“Institutions”,即肠道菌群领域中发文量前10的机构,得到了如下的Treemap图:
可以看到University of California system(有那味了)是发文量最多的机构,然后依次分别是哈佛大学、中科院。
当然了,其实也不一定要局限于矩形,Reactome数据库上用了类似于水立方的形状来绘制Treemap图,体现pathway富集结果。颜色越黄的模块代表pvalue越显著。
不过,总体来说,个人觉得这类可视化的方式可能在一些商业报告或者科学综述中更具有施展空间。在普通的研究论文中,或许还是不够直观,这也是我觉得用处有限的原因。毕竟鄙人科研狗一只。
如何作Treemap图
今天,我们用两种形式“复现”一下上图中Web of Science的分析结果。
第一种,就是最传统的Treemap图,使用treemap包。
library(treemap)
library(RColorBrewer)
ExampleWOS<-data.frame(group=c("USA","USA","China","France","USA","Ireland","USA","France","UK","USA"),
subgroup=c("UNIVERSITY OF CALIFORNIA SYSTEM","HARVARD UNIVERSITY","CHINESE ACADEMY OF SCIENCES",
"INSTITUT NATIONAL DE LA SANTE ET DE LA RECHERCHE MEDICALE INSERM",
"UNIVERSITY OF NORTH CAROLINA","UNIVERSITY COLLEGE CORK",
"UNIVERSITY OF CALIFORNIA SAN DIEGO","INRAE","UNIVERSITY OF LONDON",
"UNIVERSITY OF TEXAS SYSTEM"),
value=c(4.770,3.083,1.821,1.758,1.578,1.495,1.495,1.466,1.389,1.374)
)
treemap(ExampleWOS,index=c("group","subgroup"),vSize="value",type="index",palette = "Set1")
第二种,我们将使用一个叫做voronoiTreemap的R包,把矩形变成圆形。这个包还可以有互动,不过没有仔细研究,感觉是用于网站可视化的。
library(voronoiTreemap)
vt_d3(vt_export_json(vt_testdata()))
#数据来源Web of Science
ExampleWOS<-data.frame(h1=rep("Total",10),
h2=c("USA","USA","China","France","USA","Ireland","USA","France","UK","USA"),
h3=c("UNIVERSITY OF CALIFORNIA SYSTEM","HARVARD UNIVERSITY","CHINESE ACADEMY OF SCIENCES",
"INSTITUT NATIONAL DE LA SANTE ET DE LA RECHERCHE MEDICALE INSERM",
"UNIVERSITY OF NORTH CAROLINA","UNIVERSITY COLLEGE CORK",
"UNIVERSITY OF CALIFORNIA SAN DIEGO","INRAE","UNIVERSITY OF LONDON",
"UNIVERSITY OF TEXAS SYSTEM"),
color=c("#FFD700","#FFD700","#CD0000","#00BFFF","#FFD700","#225EA8","#FFD700","#00BFFF","#9ACD32","#FFD700"),
weight=c(4.770,3.083,1.821,1.758,1.578,1.495,1.495,1.466,1.389,1.374)#占所有文章的比例
)
ExampleWOS$codes<-ExampleWOS$h3
head(ExampleWOS)
h1 h2 h3 color weight
1 Total USA UNIVERSITY OF CALIFORNIA SYSTEM #FFD700 4.770
2 Total USA HARVARD UNIVERSITY #FFD700 3.083
3 Total China CHINESE ACADEMY OF SCIENCES #CD0000 1.821
4 Total France INSTITUT NATIONAL DE LA SANTE ET DE LA RECHERCHE MEDICALE INSERM #00BFFF 1.758
5 Total USA UNIVERSITY OF NORTH CAROLINA #FFD700 1.578
6 Total Ireland UNIVERSITY COLLEGE CORK #225EA8 1.495
codes
1 UNIVERSITY OF CALIFORNIA SYSTEM
2 HARVARD UNIVERSITY
3 CHINESE ACADEMY OF SCIENCES
4 INSTITUT NATIONAL DE LA SANTE ET DE LA RECHERCHE MEDICALE INSERM
5 UNIVERSITY OF NORTH CAROLINA
6 UNIVERSITY COLLEGE CORK
gdp_json <- vt_export_json(vt_input_from_df(ExampleWOS))
vt_d3(gdp_json)
今天的分享就到这里啦~
往期R数据可视化分享
R数据可视化22: 怎么获取CNS级颜色搭配
R数据可视化21: Edge Bundling图
R数据可视化20: 弦图
R数据可视化19: 环状条形图
R数据可视化18: 弧形图
R数据可视化17: 桑基图
R数据可视化16: 哑铃图
R数据可视化15: 倾斜图 Slope Graph
R数据可视化14: 生存曲线图
R数据可视化13: 瀑布图/突变图谱
R数据可视化12: 曼哈顿图
R数据可视化11: 相关性图
R数据可视化10: 蜜蜂图 Beeswarm
R数据可视化9: 棒棒糖图 Lollipop Chart
R数据可视化8: 金字塔图和偏差图
R数据可视化7: 气泡图 Bubble Plot
R数据可视化6: 面积图 Area Chart
R数据可视化5: 热图 Heatmap
R数据可视化4: PCA和PCoA图
R数据可视化3: 直方/条形图
R数据可视化2: 箱形图 Boxplot
R数据可视化1: 火山图