ggplot2作圖設(shè)置坐標(biāo)軸的起始位置

當(dāng)使用ggplot2作圖的時(shí)候有限制坐標(biāo)軸的范圍的需求時(shí)可以使用的設(shè)置函數(shù)有3個(gè):
xlim( ) or ylim( )
scale_x_continuous(limits = c( )) or scale_y_continuous(limits = c( ))
coord_cartesian(ylim = c( ), xlim = c( ))
從本質(zhì)上來(lái)說(shuō)這三個(gè)函數(shù)都可對(duì)坐標(biāo)軸的范圍進(jìn)行設(shè)置,但是不同的是前面兩函數(shù)當(dāng)有點(diǎn)超出指定的范圍時(shí),這些超出的點(diǎn)會(huì)被刪除,具體演示如下:
library(ggplot2)

模擬數(shù)據(jù)

a <- c(1,2,3,4,5,6,7,8,9)
b <- c(1,2,3,2,4,6,6,5,3)

原始的圖形

ggplot() +
geom_bar(mapping = aes(x=a, y=b), stat = "identity")


使用ylim()設(shè)置y軸范圍時(shí),當(dāng)沒(méi)有點(diǎn)超出設(shè)置范圍則一切正常

ggplot() +
geom_bar(mapping = aes(x=a, y=b), stat = "identity") + ylim(0,7)


使用ylim()設(shè)置y軸范圍時(shí),當(dāng)有點(diǎn)超出設(shè)置范圍則超出的點(diǎn)會(huì)被remove

ggplot() +
geom_bar(mapping = aes(x=a, y=b), stat = "identity") + ylim(0,5)



使用scale__continuous函數(shù)設(shè)置范圍和lim()一樣會(huì)發(fā)生remove的情況

ggplot() +
geom_bar(mapping = aes(x=a, y=b), stat = "identity") + scale_y_continuous(limits = c(0,5))



而使用coord_cartesian(*lim = c( ))函數(shù)對(duì)坐標(biāo)軸起始位置進(jìn)行設(shè)置則不會(huì)出現(xiàn)remove的情況,圖形會(huì)把超出的部分截掉,只保留能在設(shè)置的坐標(biāo)范圍顯示的部分

ggplot() +
geom_bar(mapping = aes(x=a, y=b), stat = "identity") + coord_cartesian(ylim = c(0,5))



其中還有一個(gè)需要注意的點(diǎn)就是前面兩個(gè)起始位置都必須是0,否則則不會(huì)顯示圖形,但是最后coord_cartesian(*lim = c( ))函數(shù)則會(huì)顯示從設(shè)置的起始位置開(kāi)始的圖形:

當(dāng)起始位都置設(shè)置為1時(shí),coord_cartesian(*lim = c( ))函數(shù)的表現(xiàn)則最佳

ggplot() +
geom_bar(mapping = aes(x=a, y=b), stat = "identity") + ylim(1,7)
ggplot() +
geom_bar(mapping = aes(x=a, y=b), stat = "identity") + scale_y_continuous(limits = c(1,7))
ggplot() +
geom_bar(mapping = aes(x=a, y=b), stat = "identity") + coord_cartesian(ylim = c(1,7))





總的來(lái)說(shuō),似乎coord_cartesian(*lim = c( ))函數(shù)對(duì)于坐標(biāo)軸范圍的設(shè)置似乎更加強(qiáng)大,也推薦使用.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。