今天想跟大家分享一下如何绘制树形图,看到这个图名字的时候应该有不少人会觉得很陌生,反正我第一次看到这个名字的时候脑海中没有什么浮出的印象。也许当你看到图的时候可能会觉得有点熟悉。其实这个图看上去给人的视觉效果还是蛮不错的。
那么废话不多说,我们下面直接展示绘制树形图的代码:
library(ggplot2)
library(treemapify)
library(ggplotify)
data <- read.csv("https://raw.githubusercontent.com/selva86/datasets/master/proglanguages.csv")
head(data)
id value parent rank
1 Java (general) 423 Java 40
2 PHP (general) 253 PHP 39
3 dotNet (general) 220 dotNet 38
4 Python (general) 219 Python 37
5 AngularJS 185 JavaScript 36
6
从上面的代码可以看到这个图的输入数据(测试原始数据的链接需要能科学上网才可以打开)有四列,其中两列是id,分别是主分类和次级分类,另外两列是数值用于确定画图的面积和坐标,下面是画图的代码:
# plot
treedata <- treemapify(data, area = "value", fill = "parent", label = "id", group = "parent")
ggplot(treedata,aes(area=rank,fill=parent,subgroup=parent,label=id))+
geom_treemap()+
geom_treemap_text(colour = "white",reflow = T)+
scale_x_continuous(expand = c(0, 0))+
scale_y_continuous(expand = c(0, 0))+
scale_fill_brewer(palette = "Dark2")+
geom_treemap_subgroup_border()+
geom_treemap_subgroup_text(place = "bottom", grow = T, alpha = 0.8, colour ="grey")
结果见下图:
现在应该觉得有些眼熟的感觉了吧,是不是看起来效果还不错,不过看起来确实有点像课程的宣传广告!
最后
虽然这个图在文献中不常见,但是个人觉得这个图对数据的视觉展示效果还是很吸引人的眼球,如果有合适的数据来展示可以达到给人眼前一亮的效果。emm,今天就分享到这里了。
网友评论