簡體   English   中英

使用 facet_wrap 時空構面的排序/放置

[英]Ordering/placement of empty facet when using facet_wrap

考慮以下分面圖,該圖以 2x2 排列繪制了 3 個分面。 空面位於右下方。

library(ggplot2)
ggplot(mtcars) + 
  aes(x = wt, y = mpg) + 
  geom_point() + 
  facet_wrap(~factor(cyl), ncol = 2)

具有 3 個面的 2x2 圖。空構面位於右下角。

我想生成一個在頂行具有空構面的圖,例如如下所示:

具有 3 個面的 2x2 圖。空構面位於右上角。

有什么方法可以做到這一點而不會弄亂 grob 或 gtable 嗎?

facet_wrap有一個選項as.table 從文檔:

如果為 TRUE(默認值),則構面的布局類似於右下角具有最高值的表格。 如果為 FALSE,則分面的布局類似於右上角的最高值的圖。

如果你設置as.table = F ,你會在右上角看到一個空白區域,但面板現在處於一個尷尬的順序; 他們會像

8 (blank)
4    6

要獲得您想要的訂單,請進行一些預處理。

如果你反轉因子水平,你會得到一個布局

4 (blank)
8    6

順序歸結為左下角、右下角、左上角、右上角。

根據您希望它們的排列方式,您可能必須手動對構面級別進行排序,除非在您的整個項目中還有一些其他邏輯可以組合在一起。 我在這里手動完成了forcats::relevel

library(dplyr)
library(ggplot2)

mtcars %>%
  mutate(cyl = as.factor(cyl) %>%
           forcats::fct_relevel("6", "8", "4")) %>%
  ggplot(aes(x = wt, y = mpg)) +
  geom_point() +
  facet_wrap(vars(cyl), ncol = 2, as.table = F)

reprex 包(v0.3.0) 於 2019 年 6 月 4 日創建

暫無
暫無

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

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