簡體   English   中英

ggplot2 的一個方面內的兩個圖

[英]Two plots within one facet in ggplot2

我有兩種類型的數據來創建兩種類型的 plot,條形和線。 它們具有不同的 y 軸,但具有相同的 x 軸。 它們都按相同的類別級別分類

示例代碼:

data <- data.frame( Station = sample(LETTERS[seq( from = 1, to = 4 )],50, rep = TRUE),
                  Date = sample(seq(as.Date('2015/01/01'), as.Date('2015/12/31'), by="day"), 50),
                   Presence = sample(0:10,50,rep = TRUE),
                   Noise = sample(70:130,50, rep=TRUE))
noise <-  ggplot()+
    geom_line(data = data,aes(x=Date, y= Noise, color= Station))+
    scale_x_date(date_breaks = "1 month")+
    facet_wrap(~Station, ncol=2, strip.position="right")+
    theme(axis.title.x = element_text(margin = margin(t = 20)))+
    guides(colour = guide_legend(override.aes = list(size=3)))+
    coord_cartesian(xlim = c(as.Date("2015-02-01"),as.Date("2015-10-30")))+
    labs( x='Date')+
    theme_classic(base_family = "serif")

在此處輸入圖像描述

pres <-ggplot()+
  geom_bar(data = data,aes(x= Date, y = Presence), stat = "identity")+
  scale_x_date(date_breaks = "1 month")+
  facet_wrap(~Station, ncol=2, strip.position="right")+
  theme(axis.title.x = element_text(margin = margin(t = 20)))+
  coord_cartesian(xlim = c(as.Date("2015-02-01"),as.Date("2015-10-30")))+
  labs( x='Date')+
  theme_classic(base_family = "serif")

在此處輸入圖像描述

我想做的是結合這兩個圖,但是 label 具有相同的方面(站)。

我在 Photoshop 中制作的快速示例如下所示:

在此處輸入圖像描述

等等

任何幫助,將不勝感激!

ggplot沒有很好的方法來做到這一點,但它當然可以做到:

ggplot()+
  geom_line(data = data,aes(x=Date, y= Noise, color= Station))+
  geom_bar(data = data,aes(x= Date, y = Presence*10), stat = "identity")+
  scale_x_date(date_breaks = "1 month")+
  scale_y_continuous(
    name = "Noise",
    sec.axis = sec_axis(~./10, name="Presence")
  ) +
  facet_wrap(~Station, ncol=2, strip.position="right")+
  theme(axis.title.x = element_text(margin = margin(t = 20)))+
  guides(colour = guide_legend(override.aes = list(size=3)))+
  coord_cartesian(xlim = c(as.Date("2015-02-01"),as.Date("2015-10-30")))+
  labs( x='Date')+
  theme_classic(base_family = "serif")

所以這里要做的是在geom_bar之后添加geom_line並添加scale_y_continuous 后者中的sec.axis提供了第二個軸,但是所有繪圖都將繪制在主軸上,而輔助軸沒有任何功能。 為了正確使用它,我們需要自己定義軸之間的比例並將它們添加到geom_barsec.axis

結果如下所示: 在此處輸入圖像描述

如果要將比例更改為例如 5,則代碼如下所示:

ggplot()+
  geom_line(data = data,aes(x=Date, y= Noise, color= Station))+
  geom_bar(data = data,aes(x= Date, y = Presence*5), stat = "identity")+
  scale_x_date(date_breaks = "1 month")+
  scale_y_continuous(
    name = "Noise",
    sec.axis = sec_axis(~./5, name="Presence")
  ) +
  facet_wrap(~Station, ncol=2, strip.position="right")+
  theme(axis.title.x = element_text(margin = margin(t = 20)))+
  guides(colour = guide_legend(override.aes = list(size=3)))+
  coord_cartesian(xlim = c(as.Date("2015-02-01"),as.Date("2015-10-30")))+
  labs( x='Date')+
  theme_classic(base_family = "serif")

使用以下 output: 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM