gg.gap包—截斷Y軸小能手

2021-02-08 BioparaMeta

截斷Y軸往往是我們作柱形圖時候,當有一組數據的分布過大或者過小時候需要用到,不截斷的話值小的變量信息往往會被掩蓋,圖片也會不美觀,其實R中截斷Y軸方式其實已經有很多了,今天再介紹倆個快速截斷Y軸方法供大家參考。

gg.gap包

這個包已經發布在Cran上了,可以直接install.packages('gg.gap')進行安裝,這裡給出包的文檔地址[1]以供學習。


這個包的Description中提到ggplot2圖中定義Y軸不是很容易,gg.gap()函數可以執行此操作,我們就來一探究竟。使用前我們先通過  ?gg.gap  了解一下該函數。簡單使用如下:

函數使用

參數並不算多,我們來簡單看一下:

參數作用plot'ggplot2'圖形ylimy軸數值的限制segments設置一段的間隔。如果你想給出多段間隔,請使用list()將它們連接起來。tick_width設置每個分段的刻度。rel_heights設置分段的相對高度,默認為1和0。vjust垂直調整,默認為0...?gg.gap自行了解吧示例

我們來看下文檔中給的例子,是用了mtcars數據集示範。

先來個簡單的柱形圖

data(mtcars)
library(ggplot2)
p<-ggplot(data = mtcars, aes(x = gear, fill = gear)) +
  geom_bar() +
  ggtitle("Number of Cars by Gear") +
  xlab("Gears")
p

先切一刀

通過設置segment=c(5,10)可以輕鬆將Y中從5到10處截斷

library(gg.gap)# 加載包
gg.gap(plot=p,
       segments=c(5,10),
       ylim=c(0,50))

再來一刀

切倆段時候注意使用list函數包含倆段的範圍,這裡還用到tick_width = c(1,0.5,10),它的作用可以設置每個分段的刻度範圍,如下圖切分後的三個圖,Y軸的刻度範圍就分別變為1, 0.5, 10了。

gg.gap(plot=p,
       segments=list(c(2.5,4),c(5,10)),
       tick_width = c(1,0.5,10),
       ylim=c(0,50))

設置相對高度

rel_heights參數可以設置Y軸片段的相對高度,用時自己調節數值至理想的樣子即可。

gg.gap(plot=p,
       segments=list(c(2.5,4),c(5,10)),
       tick_width = c(1,0.5,10),
       rel_heights=c(0.2,0,0.2,0,1),
       ylim=c(0,50))

其他

我們可以設置scale_y_continuous(trans = 'reverse')將Y軸數值進行反轉,從上往下數值由小到大,也是一種不錯的可視化選擇。
#reversed y-axis
p<-ggplot(data = mtcars, aes(x = gear, fill = gear)) +
  geom_bar() +
  ggtitle("Number of Cars by Gear") +
  xlab("Gears")+
  scale_y_continuous(trans = 'reverse')
p
#single segments and missing tick_width
gg.gap(plot=p,
       segments=c(10,5),
       ylim=c(15,0))

在看文檔時候,看到作者在新版本v1.3中增添了一個add_legend函數可以去增加圖例。
library(ggplot2)
mtcars$gear <- factor(mtcars$gear)
bp <- ggplot(data = mtcars, aes(x = gear, fill = gear)) +
  geom_bar() +
  ggtitle("Number of Cars by Gear") +
  xlab("Gears")
gg.gap(plot = bp,
       ylim = c(0,16),
       segments = c(6,8))
add.legend(plot = bp,
           margin = c(top=1,right=2.5,bottom=1,left=460))

以上就是gg.gap包截斷Y軸的基本使用了,更多參數細節可以去看源文檔,不多內容也就倆三頁。

另一種思路(coord_cartesian函數)

其實Y軸截斷是倆個範圍的內的圖形進行組合,再調整比例的設置,我們可以使通過coord_cartesian函數去設置ylim的範圍,先分別畫出倆個範圍,再利用ggpubr包中的ggarrange進行倆個圖形的拼接也可以實現目的,我們還以上面的柱形圖舉例:

library(ggpubr)
p1<-ggplot(data = mtcars, aes(x = gear, fill = gear)) +
  geom_bar() +
  xlab("Gears")+
  coord_cartesian(ylim = c(0,5))
p2<-ggplot(data = mtcars, aes(x = gear, fill = gear)) +
  geom_bar() +
  ggtitle("Number of Cars by Gear")+
  labs(x=NULL,y=NULL,fill=NULL) +
  theme(axis.text.x = element_blank(),axis.ticks.x = element_blank()) +     #去掉X軸和X軸的文字
  coord_cartesian(ylim = c(10,50))
p1
p2
#拼起來
ggarrange(p2,p1,heights=c(1/5, 4/5),ncol = 1, nrow = 2,common.legend = TRUE,legend="right",align = "v")

參考資料[1]

gg.gap: https://www.rdocumentation.org/packages/gg.gap/versions/1.3/topics/gg.gap

相關焦點

  • Excel圖表縱坐標軸不等間距、對數坐標軸、截斷坐標軸怎樣設置
    「不等距+截斷」坐標軸不等距坐標軸設計思路:Excel默認是無法設置不等距坐標軸的,所以我們在縱坐標軸上疊加一個散點圖,使散點圖上的點正好是各個「不等距」的數值,然後將散點圖修改成坐標軸樣式。隱藏原有的坐標軸,用散點圖作為新的坐標軸。
  • R語言統計與繪圖:ggsurvplot()函數繪製Kaplan-Meier生存曲線
    在survminer包中,可以使用plot()函數、ggsurvplot()函數用來繪製Kaplan-Meier生存曲線。今天就來學習在R中使用ggsurvplot()函數繪製Kaplan-Meier生存曲線。
  • 諏圖——ggmatrix
    這個包的主要基於兩個原因:昨天朋友告訴我被翻牌子把rectriangle整合進ggcor,我考慮了之後覺得放在ggcor不是很合適,就新開了一個包。安裝# install.packages("devtools")devtools::install_github("houyunhuang/ggmatrix")案例ggmatrix的緣起就是上下不一樣的三角形熱圖,所以介紹也從這個熱圖開始。
  • R語言的ggplot2+ggforce包繪製散點圖並添加分組邊界
    之前的推文介紹過ggplot2繪圖添加橢圓分組邊界和圓形分組邊界,藉助的函數分別是ggforce包裡的geom_circle()函數今天查找桑基圖的資料的時候發現了一份介紹ggforce這個包的使用方法的文章 https://rviews.rstudio.com/2019/09/19/intro-to-ggforce/ ,發現發現添加分組邊界還有其他的實現方法,今天的推文記錄一下
  • CRAN上R包的十年增長史
    Daniel Marcelino受邀出席,並介紹了R包—SciencesPo。在研討會上,Daniel Marcelino介紹了R的生態系統,並闡述了CRAN上R包的歷史增長情況。在本文,我們不但可以了解到R包的一個增長歷史,而且通過給出的R代碼我們可以學習到網頁數據抓取、數據整理和數據可視化的一些知識。在本文,作者通過抓取CRAN上R包的發布日誌數據,繪製了如下的圖形。
  • 二次函數關於x、y軸對稱的圖形的解析式
    B(a,-b),關於y軸對稱的點C(-a,b)。拋物線y=x2-4x-3關於x軸對稱得到的拋物線形狀大小與原拋物線一樣,但開口的方向改為向下,頂點關於x軸對稱。所以所求拋物線的二次項係數是-1,頂點為(2,7)。所以,拋物線y=x2-4x-3關於x軸對稱的拋物線為y=-(x-2)2+7.
  • 怎麼使用origin繪製雙y軸?繪製的具體操作
    Origin是一款非常棒的繪圖軟體,可以輕鬆繪製雙y軸,還不會的小夥伴下面就來看看使用origin繪製雙y軸的具體操作吧。Origin軟體版本:10.5.6.6235遊戲娛樂立即查看怎麼畫雙y軸 打開origin 軟體。在Date 1中右鍵,選擇"Add new column」,添加一個新的Y數據列表。
  • 可攜式數控切割機使用方法之主機在Y軸上的移動方式
    可攜式數控切割機是目前數控切割設備中應用最為廣泛,最經濟實惠的數控切割設備,其切割方式為火焰切割和等離子切割,兩者構造和設備終端上完全相同,不少初學者經常會詢問可攜式數控切割機如何使用,可攜式數控切割機教程等,下面奧迅切割設備小編就給大家分享一下有關可攜式數控切割機使用方法之主機在Y軸上的移動方式
  • R-rayshader包: 一個震撼的交互型3D可視化
    該包的主要功能就是將ggplot2畫出來的2D圖像變為3D圖像,不說廢話,直接上代碼。# 如果缺失sf包,建議先安裝library(sf)nc = st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE) #加載包自帶的數據gg_nc = ggplot(nc) + # 加載North Carolina地圖 geom_sf(aes(fill = AREA
  • 將函數y=-3x的圖象沿y軸向上平移2個單位長度後,所得圖象
    題目將函數y=-3x的圖象沿y軸向上平移2個單位長度後,所得圖象對應的函數關係式為( )A.y=-3x+2 B.y=-3x-2C.y=-3(x+2) D.y=-3(x-2)普通學生思路:一次函數的圖象平移不會改變圖象的形狀與大小,平移後的圖象與原來圖象平行,直線平移後的解析式要注意平移時k的值不變,只有b發生變化。
  • X軸、Y軸與Z軸
    在數年的訪談經歷中,小老闆接觸到部分「世人眼中的成功人士」,或是年薪百萬的金領、或是身家上億的生意人,他們看問題的角度、做事情的方式,哪些是他們認為重要的事情,其中有不少值得揣摩之處。草撰此文,與諸位分享。吃飯有人說,吃飯是他們一天中最重要的事情。「尤其是早餐。」
  • 它山之石可以攻「色」(2):從 ggthemes 提取經濟學人的圖表配色
    後來學習了 ggplot ,我從 ggthemes 中提取顏色的結果,也驗證了我之前人工勞動的總結。本帖我們介紹從 ggthemes 提取經濟學人的圖表配色。▍1、ECO 圖表配色預覽加載 ggplot 和 ggthemes 包:> library(ggplot2)> library(ggthemes)模擬數據做柱形圖:df
  • 數據可視化系列:那些被你忽略的坐標軸設計細節
    2. y軸標籤設計y軸標籤的設計重點在標籤數量、取值範圍和數據格式上。標籤顯示區域一般根據最長標籤寬度自適應縮放。如果數組是固定的,就寫成固定寬度,節省圖表計算量,提高渲染速度。2.2 y軸標籤取值範圍y軸標籤的取值範圍決定了圖形在整個繪圖區域的顯示高度。折線圖y軸標籤取值一般保證圖形約佔繪圖區域的2/3,以更有效的傳達數據波動幅度,避免掩蓋和誇大變化趨勢。