查看原文
其他

ggplot2字体溢出的那点破事

2017-04-03 Y叔 biobabble

举个栗子

require(ggplot2) d <- data.frame(x=c(0, 0.002, 0.00575), y = 1:3) p <- ggplot(d, aes(x, y)) + geom_point() + xlab(NULL) + ylab(NULL) print(p)

上面图中x轴的文本0.006,这个数字中的6几乎看不到,因为一半过界了。

还能更差

比如我把字体搞大点:
   p <- p + theme(axis.text=element_text(size=12))
   print(p)

简直了,6都看不见了。第一次遇到这种情况,都会觉得这软件也太傻了!连坐标轴都会过界!但事实上,这是一个普遍的现象。因为像点这些,是数据空间,但文本是像素空间,只会按照指定的大小转化为多少个像素,然后把字打出来,这些当然容易打过界了。特别是如果把文本打在数据点的右边,比如我们画进化树时,需要画tip label,这纯粹是在右边打字的,文本通常只有部分显示出来,解决方案就在ggtree的里,用xlim搞大右边。比如这个例子的话,+xlim很容易解决的:

p + xlim(NA, 0.0062)

当然复杂的情况也是有的,比如你在分面的时候,只有某个分面溢出了,而scales又是free的,你直接+xlim会应用于所有分面,但在free scale的情况下,你只想应用到某一分面,这个也是可以搞的,参考xlim_tree: set x axis limits for only Tree panel,做为思考题,看大家能不能悟出来。

讲ggtree各种技巧,对于你们学ggplot2也是极有帮助的!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存