其他
ggplot2 - 3.0.0版本的新功能
CRAN发布ggplot2
3.0.0
版本,主要是加入了tidy evaluation,和其它tidyverse包结合更紧密,有很多大的更新,估计很多包又要爆了,但我还是很期待的,因为确实更好玩了。
比如可以直接用tag来标记ggplot,然后我们就可以通过patchwork使用+号来拼图了,这让cowplot情何以堪!!!下面再介绍一下随手涂鸭的功能:
《ggplot2字体溢出的那点破事》这是经典老问题了,现在新版本的ggplot2
有新的解决方案了,在coord_cartesian
中新加入了clip
参数,这样可以支持把图层画在画布之外,那么文本打过界也就支持了。这有一个好处,是可以支持direct label,而不需要调整xlim
和ylim
,毕竟你把xlim
和ylim
搞大有时候会给人以误导,认为你的数据取值范围就是图中的xlim
和ylim
,但实际上要小一些。
我以ggtree
为例,为了让tip label打全,那么p1
把时间给搞到2020,但实际上最近的采样时间是2013年,这样你单看x
轴的标记,总感觉有一点点不对路,或者有一点点别扭。现在好了,我不设置xlim
,而是让label打过界,当然还是需要有足够的空间来放这些文本,这个可以通过把margin
搞大来实现。
require(ggtree)
beast_file <- system.file("examples/MCC_FluA_H3.tree", package="ggtree")
beast_tree <- read.beast(beast_file)
ggtree(beast_tree, mrsd="2013-01-01") + geom_tiplab(size=2, align=TRUE, linesize=.5) + theme_tree2() -> p
p1 = p + xlim(NA, 2020)
p + coord_cartesian(clip="off") + theme_tree2(plot.margin=margin(6, 80, 6, 6)) -> p2
cowplot::plot_grid(p1, p2, ncol=2)
如果你脑洞够大,你甚至于可以用theme
把坐标轴给去掉,然后自己用geom_segment
画坐标轴,于是你可以把ggplot2
画成类似于base
plot,可以装得特别像。
再者,因为我们可以随意把各种元素画到画布的任何区域上,放开脑洞,各种鬼畜的ggplot2可以走你了!像下面这个GIF,我能盯着看很久: