簡體   English   中英

在 facet_wrap 中為每個構面添加標題

[英]Adding titles to each facet in facet_wrap

我很好奇是否可以將軸標題放在 facet_wrap 中的每個方面。 我可以靠近,但無法正確顯示 x 和 y。 該代碼當前在同一軸上同時顯示 x 和 y。 我知道這不完全是 function 的方式,但我想看看它是否可以在不進行更復雜的事情的情況下完成(用 grob 或其他東西安排單獨的圖)。

簡而言之,我希望 y_names 和 x_names 出現在它們各自的軸上。

testdat<-data.frame(x_names=c("A","B","C"),x_vals=c(1,2,3),y_names=c("B","C","A"), y_vals=c(2,3,1))
ggplot(testdat, aes(x_vals, y_vals)) +
  geom_point(pch=21) +
  facet_wrap(y_names~x_names, 
             ncol=1,
             scales="free",
             strip.position="left",
             labeller=as_labeller(c(A= "Apple",
                                    B= "Bread",
                                    C= "Cantaloupe"))
  )+
  theme( strip.background = element_blank(),
         strip.placement = "outside",
         axis.title.x=element_blank(),
         axis.title.y=element_blank())

我不確定你的意思 - 也許是這個?

library(ggplot2)

testdat <- data.frame(x_names = c("A","B","C"),
                      x_vals  = c(1, 2, 3),
                      y_names = c("B", "C", "A"), 
                      y_vals  = c(2, 3, 1))

ggplot(testdat, aes(x_vals, y_vals)) +
  geom_point(pch = 21) +
  facet_grid(y_names ~ x_names, 
             labeller = as_labeller(c(A = "Apple",
                                      B = "Bread",
                                      C = "Cantaloupe")),
              switch = "both") +
  theme( strip.background = element_blank(),
         strip.placement  = "outside",
         axis.title.x     = element_blank(),
         axis.title.y     = element_blank())


編輯

當兩個分面因素完全相關時,OP 似乎想要三個(可能完全不相關的)圖。 這相當於對單個變量進行刻面。 但是,我們希望每個方面都有一個單獨的軸。 可能有幾種方法可以直接在 ggplot 中實現這一點,但它們都非常復雜,包括添加自定義注釋。

我認為在這種情況下,到目前為止,最簡單和最自由的方法是使用gridExtra::grid.arrange將繪圖添加在一起,這不需要任何黑客或 grob 操作。 這很簡單:

p1 <- ggplot(filter(testdat, x_names == "A", y_names == "B"), aes(x_vals, y_vals)) + 
        geom_point() + labs(x = "Apple", y = "Banana")

p2 <- ggplot(filter(testdat, x_names == "B", y_names == "C"), aes(x_vals, y_vals)) +
        geom_point() + labs(x = "Banana", y = "Cherry")

p3 <- ggplot(filter(testdat, x_names == "C", y_names == "A"), aes(x_vals, y_vals)) +
        geom_point() + labs(x = "Cherry", y = "Apple")

gridExtra::grid.arrange(p1 , p2, p3)

在此處輸入圖像描述 代表 package (v0.3.0) 於 2020 年 7 月 22 日創建

問題:

“我很好奇是否可以將軸標題放在 facet_wrap 中的每個方面。”

回答:

對的,這是可能的。

然而......你應該這樣做嗎? 不。

分面為您的繪圖添加了一個額外的維度,即,給定一個x和一個y變量,第三個變量用於對數據進行子集化,例如z

您有一個隱含的代碼請求來顯示具有多個 x 和 y變量的圖,因此您不應該使用分面。 相反,應該有三個不同的情節:艾倫·卡梅倫(Allan Cameron)好心地提出了一個很好的解決方案。

ggplot2 書解釋了這里應該使用什么刻面: https://ggplot2-book.org/facet.html

暫無
暫無

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

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