如何格式化 ggplot2::facet_grid 中的网格标题和条目
How to format grid title and entries in ggplot2::facet_grid
我有一个使用 facet_grid()
的图,我想修改分面网格的条目。
考虑以下 MWE:
library(ggplot2)
ggplot(mpg, aes(displ, cty, fill=cyl)) +
geom_point() +
scale_fill_continuous() +
facet_grid(rows = vars(drv))
我想用字符替换每行右侧的条目4
、f
和r
(例如 c("Case 1", "Case 2", "Case 3")
和 添加 条目右侧的标题框(即灰色框和图例之间 (cyl
)。
facet_grid
的文档对我没有帮助 - 有人能给我指出正确的方向吗?
您必须为 facet_grid()
中的 labeller
参数提供标记函数,它使用命名字符向量作为查找 table.
library(ggplot2)
ggplot(mpg, aes(displ, cty, fill=cyl)) +
geom_point() +
scale_fill_continuous() +
facet_grid(rows = vars(drv),
labeller = as_labeller(c("4" = "Case1", "f" = "Case2", "r" = "Case3")))
由 reprex package (v0.3.0)
于 2020-05-28 创建
编辑:
要使用额外的条带层作为跨越标题,您可以使用来自 ggh4x 的 facet_nested()
(完全免责声明:我构建了那个包)。
library(ggplot2)
library(ggh4x)
ggplot(mpg, aes(displ, cty, fill=cyl)) +
geom_point() +
scale_fill_continuous() +
facet_nested(rows = vars("title", drv),
labeller = as_labeller(c("4" = "Case1", "f" = "Case2",
"r" = "Case3", "title" = "My Title Here")))
由 reprex package (v0.3.0)
于 2020-05-28 创建
如果您不是特别关心那里的条带,您可以使用辅助 y-axis 指南。
library(ggplot2)
ggplot(mpg, aes(displ, cty, fill=cyl)) +
geom_point() +
scale_fill_continuous() +
facet_grid(rows = vars(drv),
labeller = as_labeller(c("4" = "Case1", "f" = "Case2", "r" = "Case3"))) +
guides(y.sec = guide_none("My Title Here"))
由 reprex package (v0.3.0)
于 2020-05-28 创建
您还可以考虑向数据中添加一个变异列,如下所示:
library(dplyr)
mpg_2 <- mpg %>%
mutate(drv_2 = case_when(
drv == "4" ~ "Case1",
drv == "f" ~ "Case2",
drv == "r" ~ "Case3"
))
ggplot(mpg_2, aes(displ, cty, fill=cyl)) +
geom_point() +
scale_fill_continuous() +
facet_grid(rows = vars(drv_2))
我有一个使用 facet_grid()
的图,我想修改分面网格的条目。
考虑以下 MWE:
library(ggplot2)
ggplot(mpg, aes(displ, cty, fill=cyl)) +
geom_point() +
scale_fill_continuous() +
facet_grid(rows = vars(drv))
我想用字符替换每行右侧的条目4
、f
和r
(例如 c("Case 1", "Case 2", "Case 3")
和 添加 条目右侧的标题框(即灰色框和图例之间 (cyl
)。
facet_grid
的文档对我没有帮助 - 有人能给我指出正确的方向吗?
您必须为 facet_grid()
中的 labeller
参数提供标记函数,它使用命名字符向量作为查找 table.
library(ggplot2)
ggplot(mpg, aes(displ, cty, fill=cyl)) +
geom_point() +
scale_fill_continuous() +
facet_grid(rows = vars(drv),
labeller = as_labeller(c("4" = "Case1", "f" = "Case2", "r" = "Case3")))
由 reprex package (v0.3.0)
于 2020-05-28 创建编辑:
要使用额外的条带层作为跨越标题,您可以使用来自 ggh4x 的 facet_nested()
(完全免责声明:我构建了那个包)。
library(ggplot2)
library(ggh4x)
ggplot(mpg, aes(displ, cty, fill=cyl)) +
geom_point() +
scale_fill_continuous() +
facet_nested(rows = vars("title", drv),
labeller = as_labeller(c("4" = "Case1", "f" = "Case2",
"r" = "Case3", "title" = "My Title Here")))
由 reprex package (v0.3.0)
于 2020-05-28 创建如果您不是特别关心那里的条带,您可以使用辅助 y-axis 指南。
library(ggplot2)
ggplot(mpg, aes(displ, cty, fill=cyl)) +
geom_point() +
scale_fill_continuous() +
facet_grid(rows = vars(drv),
labeller = as_labeller(c("4" = "Case1", "f" = "Case2", "r" = "Case3"))) +
guides(y.sec = guide_none("My Title Here"))
由 reprex package (v0.3.0)
于 2020-05-28 创建您还可以考虑向数据中添加一个变异列,如下所示:
library(dplyr)
mpg_2 <- mpg %>%
mutate(drv_2 = case_when(
drv == "4" ~ "Case1",
drv == "f" ~ "Case2",
drv == "r" ~ "Case3"
))
ggplot(mpg_2, aes(displ, cty, fill=cyl)) +
geom_point() +
scale_fill_continuous() +
facet_grid(rows = vars(drv_2))