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