【发布时间】:2021-12-12 17:11:20
【问题描述】:
假设我有以下数据集:
set.seed(1212)
a = sample(c("A", "B"), size=100, replace=T)
x = rnorm(100)
y = model.matrix(~a + x) %*% c(0, .5, .5) + rnorm(100, 0)
d = data.frame(a=a, x=x, y=y)
我可以很容易地生成一个 ggplot 面板变量a:
p = ggplot(d, aes(x=x, y=y)) +
geom_point() +
geom_smooth(method="lm") +
facet_grid(~a, labeller=label_both)
p
我还可以轻松修改 X/Y 的标签:
p + labs(x="My X Label", y="My Y Label")
但我不知道如何轻松更改条带的标签。这些都不起作用:
p + labs(x="My X Label", y="My Y Label", strip = "A")
p + labs(x="My X Label", y="My Y Label", grid = "A")
p + labs(x="My X Label", y="My Y Label", panel = "A")
p + labs(x="My X Label", y="My Y Label", wtf = "A")
我知道我可以更改我的变量名:
ggplot(d %>% rename(`A Fancy Label` = a),
aes(x=x,y=y)) +
geom_point() +
geom_smooth() +
facet_grid(~`A Fancy Label`, labeller=label_both)
或者我可以使用某种自定义贴标机。但是,我正在制作 ggplot 图形within my R package,并且标注器内置在 R 包中,不能轻易修改。
那么,现在我的问题是:如何以不需要我修改实际变量或使用某些自定义贴标器功能的方式更改构面的变量标签?
经过大量谷歌搜索,我只能找到如何更改方面的值标签,而不是方面的变量标签(例如,this question/answer)。
提前致谢!
【问题讨论】:
-
这里定义的 global_labeller() 函数有帮助吗? ggplot2.tidyverse.org/reference/labeller.html
-
不是最优的。我宁愿在绘图后更改标签(就像分层一样),而不是更改生成绘图的函数。
标签: r ggplot2 facet-wrap facet-grid