其他
ggplot2设置可视化窗口
小伙伴发来这个图,问我是不是bug
,这真是犯了程序员的社交礼仪。
你如果对一个程序员说,“你的代码有bug。”
他的第一反应是:
1. 你的环境有问题吧
2. 傻逼你会用吗。
如果你委婉地说:“你这个程序和预期的有点不一致,你看看是不是我的使用方法有问题。”
他本能地会想:“操,是不是出bug了!”
这显然不是bug
,这是绝大多数人对ggplot2
的误解,他们认为用xlim
和ylim
是放置一个窗口去看你的图,然而在ggplot2
是限定一个窗口去过滤你的数据,并重新画图!你的数据被过滤了!如果是放置窗口在图上,一条线从A到B,如果B在窗口之外,那么线被截断了,你看到半条线,但如果是过滤数据呢?B不复存在,那么线条A到B也不复存在,没有B,A到B的线画不出来。就是这样,所以这绝逼不是bug
,而是程序员本能反应的第二种情况,你用错了。
那么怎么样不过滤数据,而只是设置可视化窗口呢?你基本上很少看到有人这么用,因为几乎99%的人都只知道xlim
和ylim
,一般人我也不告诉他,快点拿起小抄把下面的代码记录一下。
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))
往期精彩