หากใครที่กำลังมองหาวิธีที่ง่ายในแง่มุมฉลากสำหรับรายงานหรือสิ่งพิมพ์egg
( CRAN ) แพคเกจมีสวยเก๋tag_facet()
และtag_facet_outside()
ฟังก์ชั่น
library(ggplot2)
p <- ggplot(mtcars, aes(qsec, mpg)) +
geom_point() +
facet_grid(. ~ am) +
theme_bw(base_size = 12)
# install.packages('egg', dependencies = TRUE)
library(egg)
ติดแท็กภายใน
ค่าเริ่มต้น
tag_facet(p)
หมายเหตุ:หากคุณต้องการเก็บแถบข้อความและพื้นหลังไว้ให้ลองเพิ่มstrip.text
และstrip.background
ย้อนกลับtheme
หรือลบออกtheme(strip.text = element_blank(), strip.background = element_blank())
จากtag_facet()
ฟังก์ชั่นดั้งเดิม
tag_facet <- function(p, open = "(", close = ")", tag_pool = letters, x = -Inf, y = Inf,
hjust = -0.5, vjust = 1.5, fontface = 2, family = "", ...) {
gb <- ggplot_build(p)
lay <- gb$layout$layout
tags <- cbind(lay, label = paste0(open, tag_pool[lay$PANEL], close), x = x, y = y)
p + geom_text(data = tags, aes_string(x = "x", y = "y", label = "label"), ..., hjust = hjust,
vjust = vjust, fontface = fontface, family = family, inherit.aes = FALSE)
}
จัดแนวด้านบนขวาและใช้ตัวเลขโรมัน
tag_facet(p, x = Inf, y = Inf,
hjust = 1.5,
tag_pool = as.roman(1:nlevels(factor(mtcars$am))))
จัดแนวซ้ายล่างและใช้อักษรตัวพิมพ์ใหญ่
tag_facet(p,
x = -Inf, y = -Inf,
vjust = -1,
open = "", close = ")",
tag_pool = LETTERS)
กำหนดแท็กของคุณเอง
my_tag <- c("i) 4 cylinders", "ii) 6 cyls")
tag_facet(p,
x = -Inf, y = -Inf,
vjust = -1, hjust = -0.25,
open = "", close = "",
fontface = 4,
size = 5,
family = "serif",
tag_pool = my_tag)
ติดแท็กด้านนอก
p2 <- ggplot(mtcars, aes(qsec, mpg)) +
geom_point() +
facet_grid(cyl ~ am, switch = 'y') +
theme_bw(base_size = 12) +
theme(strip.placement = 'outside')
tag_facet_outside(p2)
แก้ไข : การเพิ่มทางเลือกอื่นโดยใช้แพ็คเกจstickylabeller
- `.n` numbers the facets numerically: `"1"`, `"2"`, `"3"`...
- `.l` numbers the facets using lowercase letters: `"a"`, `"b"`, `"c"`...
- `.L` numbers the facets using uppercase letters: `"A"`, `"B"`, `"C"`...
- `.r` numbers the facets using lowercase Roman numerals: `"i"`, `"ii"`, `"iii"`...
- `.R` numbers the facets using uppercase Roman numerals: `"I"`, `"II"`, `"III"`...
# devtools::install_github("rensa/stickylabeller")
library(stickylabeller)
ggplot(mtcars, aes(qsec, mpg)) +
geom_point() +
facet_wrap(. ~ am,
labeller = label_glue('({.l}) am = {am}')) +
theme_bw(base_size = 12)
สร้างโดยแพ็คเกจ reprex (v0.2.1)