設定視覺化視窗
小夥伴發來這個圖,問我是不是 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))
往期精彩+ ofollow,noindex" target="_blank">百二秦關終屬楚 + dotplot for GSEA + VSCode裡愉快地使用R + 用圖片當ggplot2畫布 + QQ" rel="nofollow,noindex" target="_blank">s04 - Computing GC Content + 飛天貓:長著蝙蝠翅膀的貓! + 用R玩一個小遊戲吧!拖延症的老毛病又犯了! + 怎樣用HOMER算出的P-value畫出CNS級別的泡泡圖?