这并不完美,但我还是希望发布它,希望它比没有更好。
使用 as_labeller()
和 labeller()
可能会得到你所需的结果。
更新
最简单的解决方案是将 Species
和 var
拆分成两个 labellers
函数。
facet_labeller_top <- function(variable, value) {
c(
"Setosa",
"",
"",
"",
"Versicolor",
"",
"",
"",
"Virginica",
"",
"",
""
)
}
facet_labeller_bottom <- function(variable, value) {
c(
"Petal.Length",
"Petal.Width",
"Sepal.Length",
"Sepal.Width",
"Petal.Length",
"Petal.Width",
"Sepal.Length",
"Sepal.Width",
"Petal.Length",
"Petal.Width",
"Sepal.Length",
"Sepal.Width"
)
}
结果:
ggplot(dat) +
geom_point(aes(x = 1, y = val)) +
facet_wrap(Species~var, labeller = labeller(Species=as_labeller(facet_labeller_top),
var = as_labeller(facet_labeller_bottom)))
数据示例:
library(tidyr)
library(ggplot2)
dat <- iris %>%
gather(var, val, Sepal.Length:Petal.Width)
Error in labeller(Species = as_labeller(facet_labeller_top), var = as_labeller(facet_labeller_bottom)) : unused arguments (Species = as_labeller(facet_labeller_top), var = as_labeller(facet_labeller_bottom))
? - CrunchyToppingggplot2
?在 3.2.1
上目前可以工作。如果仍然无法运行,请尝试使用干净的环境。 - RLave
labeller
参数吧。我刚看到你在帖子中提到了它。我的错! - NelsonGon