查看原文
其他

ggplot2设置可视化窗口

Y叔叔 YuLabSMU 2022-09-20

小伙伴发来这个图,问我是不是bug,这真是犯了程序员的社交礼仪。

你如果对一个程序员说,“你的代码有bug。”
他的第一反应是:

  • 1. 你的环境有问题吧

  • 2. 傻逼你会用吗。


如果你委婉地说:“你这个程序和预期的有点不一致,你看看是不是我的使用方法有问题。”

他本能地会想:“操,是不是出bug了!”

这显然不是bug,这是绝大多数人对ggplot2的误解,他们认为用xlimylim是放置一个窗口去看你的图,然而在ggplot2是限定一个窗口去过滤你的数据,并重新画图!你的数据被过滤了!如果是放置窗口在图上,一条线从A到B,如果B在窗口之外,那么线被截断了,你看到半条线,但如果是过滤数据呢?B不复存在,那么线条A到B也不复存在,没有B,A到B的线画不出来。就是这样,所以这绝逼不是bug,而是程序员本能反应的第二种情况,你用错了。

那么怎么样不过滤数据,而只是设置可视化窗口呢?你基本上很少看到有人这么用,因为几乎99%的人都只知道xlimylim,一般人我也不告诉他,快点拿起小抄把下面的代码记录一下。

library(ggplot2)
library(ggtree)

tr = rtree(30
p = ggtree(tr) + geom_tiplab()
p + geom_point(color='red', size=5) + 
    coord_cartesian(xlim=c(-1,2))


往期精彩

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

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