?在ggplot2中很容易出現(xiàn)一個修改坐標(biāo)軸范圍的問題壶栋,喜歡用ggplot2畫圖的需要注意一下跑杭。ylim和coord_cartesian都是調(diào)整坐標(biāo)軸范圍盯串,但是它們的結(jié)果是有可能不一樣的抚垄,看下面的一個例子:
data(diamonds)
p <- ggplot(data = diamonds, aes(x = cut, y = table, color = cut)) + geom_boxplot()
p
# 截取
p + ylim(c(0,60))
第二行原圖:
截取0到60的部分:
可以看到第二張圖跟原圖是不一樣的躏鱼,比如Fair的第一個box原數(shù)據(jù)最高是超過60的氮采,但是截取之后不到60了。這是一個不太容易注意到的坑染苛。這里是因為ylim是直接處理的數(shù)據(jù)導(dǎo)致的鹊漠,比如例子中不在范圍的數(shù)據(jù)就直接被移除。同等操作應(yīng)該用coord_cartesian來實現(xiàn)茶行。coord_cartesian指定參數(shù)控制圖形特定區(qū)域放大顯示躯概,只影響圖形展示,不影響內(nèi)部數(shù)據(jù)的值畔师。即使用原數(shù)據(jù)作圖娶靡,再對圖形進(jìn)行變動。內(nèi)部參數(shù)xlim 和 ylim 各接一個二元數(shù)值向量看锉,控制顯示的區(qū)域范圍姿锭,原理不是截取,而是放大該區(qū)域伯铣,原有圖形不變呻此。
p + + coord_cartesian(ylim = c(0,60))