
小伙伴發(fā)來這個圖,問我是不是bug ,這真是犯了程序員的社交禮儀。 你如果對一個程序員說,“你的代碼有bug?!?br>他的第一反應是: 1. 你的環(huán)境有問題吧 2. 傻逼你會用嗎。
如果你委婉地說:“你這個程序和預期的有點不一致,你看看是不是我的使用方法有問題?!?/p> 他本能地會想:“操,是不是出bug了!”
這顯然不是bug ,這是絕大多數(shù)人對ggplot2 的誤解,他們認為用xlim 和ylim 是放置一個窗口去看你的圖,然而在ggplot2 是限定一個窗口去過濾你的數(shù)據(jù),并重新畫圖!你的數(shù)據(jù)被過濾了!如果是放置窗口在圖上,一條線從A到B,如果B在窗口之外,那么線被截斷了,你看到半條線,但如果是過濾數(shù)據(jù)呢?B不復存在,那么線條A到B也不復存在,沒有B,A到B的線畫不出來。就是這樣,所以這絕逼不是bug ,而是程序員本能反應的第二種情況,你用錯了。 那么怎么樣不過濾數(shù)據(jù),而只是設置可視化窗口呢?你基本上很少看到有人這么用,因為幾乎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))

|