使用ggplot2中的labeller更改facet_wrap标签

rno*_*ian 5 plot r ggplot2

ggplot下面的内容中,我尝试更改facet_wrap使用的 10 个方面标签labeller(sch.id=paste0("sch.id:", unique(ten$sch.id)))

然而,该图显示NA而不是正确的方面标签,我想知道修复是什么?

library(ggplot2)

hsb <- read.csv('https://raw.githubusercontent.com/rnorouzian/e/master/hsb.csv')

ten <- subset(hsb, sch.id %in% unique(sch.id)[1:10])

p <- ten %>% ggplot() + aes(ses, math) + geom_point() +
 facet_wrap(~sch.id) + geom_smooth(method = "lm", se = FALSE)

p + facet_wrap(~sch.id, labeller = labeller(sch.id=paste0("sch.id:", unique(ten$sch.id)))) ## HERE ##
Run Code Online (Sandbox Code Playgroud)

Ron*_*hah 1

我认为最简单的方法是sch.id在绘图之前进行更改。

library(ggplot2)
ten$sch.id <- paste0("sch.id:", ten$sch.id)

ggplot(ten) + aes(ses, math) + 
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) + 
  facet_wrap(~sch.id)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


如果您不想修改数据并想使用参数,labeller您可以创建一个命名向量并在labeller.

cust_label <- setNames(paste0("sch.id:", unique(ten$sch.id)), unique(ten$sch.id))

ggplot(ten) + aes(ses, math) + 
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) + 
  facet_wrap(~sch.id, labeller = as_labeller(cust_label))
Run Code Online (Sandbox Code Playgroud)