• ggplot2+treemapify了解一下?


    画决策树的时候用了igraph包,由于基础薄弱加后天努力不足,所以痛苦万分。ggplot一直是我十分钟爱于做2D图形展示的工具,由于treemapify的加入,我也可以有层次的展示我的原始数据啦~真的是目之所及就可以有层次哦~

            好了,先把准备工作做好吧!

            一、该有的包先装上,比如说ggplot2、treemapify、RColorBrewer等。补充一点,关于treemapify包的安装,我用了

                   install.packages("treemapify")
                   devtools::install_github("wilkox/treemapify")

                   这两种方法都不行!所以,就直接去官网下载它的Zip包,把它解压到我R的library里直接加载了。链接在此:https://github.com/wilkox/treemapify。在右边绿色区           域“clone or download”处哈~还有一种不用解压直接选选选从本地目录安装加载程序包的方法:utils:::menuInstallLocal(),此法,就不要把下载好的压缩包解压了哈~

                   Ok,包包安装好了,就进入实战吧~

            二、实际演练

                   其实也不太实际,至少数据给的还挺理想的——因为用的是treemapify的内置数据啊~知道内置数据怎么用吧,比如说,你想知道treemapify包里的内置数据集有哪             些,用data()函数来查看;然后,你想用里面的其中一个数据集,用data(X)来加载就好啦~本案例里,用的就是treemapify包的里G20数据。

                   data(G20) is ok !

                   then , 用str()函数看下我们有哪些指标,并且它们都是些啥类型吧~

                   我用 Unique_information <- apply(G20,2,unique) 这条命令主要是不想看完整个数据框,因为从上图可以看到各个指标里面的变量不一样,用apply函数按列进行                unique需求操作,就可以看完整个数据框的所有指标的unique情况啦。unique不用细说吧,不懂的可以help(unique) or ?unique 。

                   现在我们知道,这个数据集里8个地区、20个国家、20条gdp数据、20条人类发展指数(hdi)、各地区的经济发展程度以及南北半球与否。那你想画个什么图                   呢?根据gdp大小来画个热力图,把20个地区的名字填进去?好啊,来!

                   

                       我是女生呢,所以喜欢粉色~这个图的代码就是这样啦:

                                                             ggplot(G20, aes(area = gdp_mil_usd,label=country)) + geom_treemap(color="black",fill="pink") +
                                                                 geom_treemap_text( colour = "black", place = "centre",grow = TRUE)

                      ggplot里的G20、area和label就不说了,函数geom_treemap只有装上了treemapify包在ggplot2里才会出现的。可能有的人不喜欢粉色,那就把pink自己改了吧。             还可以把函数变为geom_treemap(aes(fill=X),color="black"),其中,X就是各指标名字啦,比如hdi啦,econ_classification啦,那那些矩形里的填充色就会根据指标里面          变量的不同而不同咯。有图有真相:

            其实这样的画图已经达到了一定的目的,至少你可以比较各个国家的一些基本情况。我的area是根据gdp来的,gdp越大,矩形的区域自然越大。但是我们身为中国         人,经历过gdp高速增长的几个时期,但心里对于“gdp越大,不代表国家层次越高”这个概念是十分理解并且理解得还算透彻的。所以,再加一个指标啊,就是上图。中国         的gdp面积这么大,但它是发展中国家。

                    另外,第一个指标:region没用到啊。经济的发不发达,跟它所处的地区有啥关系不?把八个区加进来,再看看这八个区下20个国家的基本情况,是不是很有层次             感呢?感谢treemapify包啦,设置subgroup参数(一个类别型变量),函数内部可以自动完成亚群的变量聚合计算,并在图形成用框线显示出次级类别大小的规模。详             情见下图:

                   相应代码在这里:

                                                                        ggplot(G20, aes(area = gdp_mil_usd,fill=hdi, label = country,subgroup = region))+
                                                                            geom_treemap() + geom_treemap_subgroup_border(color="black") + 
                                                                            geom_treemap_subgroup_text(place = "centre", grow = T, alpha = 0.3, colour ="black") +
                                                                            geom_treemap_text(colour = "darkblue", place = "topleft", reflow = T,alpha=.8) +
                                                                            scale_fill_distiller(palette="Greens")

                    绿色看起来也不错,其实是palette里没有找到关于Pink、Pinks、pink的设置。alpha是透明度设置,越小越透明就越不显眼。这个包还有一个很人性化的东西:                 reflow参数用于控制标签是否自适应矩形块大小,若按照原始大小超过矩形块,则会自动换行显示。在你们计算机上实现的时候,可以方大图看,那些在我这张图上自动          换行的,在你们那就直直的过去了。place是text的位置设置,常用的位置就是“centre”、“topleft/topright”、“bottomleft/bottomright”啦~

                    这里就已经存在亚群的情况了,一个大的框框下,还有很多小框框。那几条粗黑的线,就是大框框的边界。也要注意,这里是有两层text文本要加的哈,                             geom_treemap_subgroup_text()这个函数加的是subgroup = region这八个文本, geom_treemap_text()加的就是label的内容。

             但这样看起来有点乱乱的,其实我们也可以分面去看这幅图片。用地区去分面啦,用region去分面啦、用econ_classification去分面啦、用 hemisphere 啦。

                  

    相应代码就是在原来的基础上加 facet_wrap( ~ X)了,还知道X是什么卅?

    明天应该是让这幅图动起来吧,今天就到此为止了!

  • 相关阅读:
    【BZOJ4517】[SDOI2016] 排列计数(组合数)
    【BZOJ4818】[SDOI2017] 序列计数(矩乘水题)
    【BZOJ4872】[SHOI2017] 分手是祝愿(思维+动态规划)
    【BZOJ4821】[SDOI2017] 相关分析(线段树)
    【BZOJ2710】[Violet 1] 追风者(计算几何)
    【BZOJ3199】[SDOI2013] escape(半平面交+BFS)
    【BZOJ1007】[HNOI2008] 水平可见直线(几何)
    【BZOJ3689】异或之(可持久化Trie树)
    【BZOJ3261】最大异或和(可持久化Trie树水题)
    NOI Online #3 提高组 小记
  • 原文地址:https://www.cnblogs.com/wf-strongteam/p/9152567.html
Copyright © 2020-2023  润新知