R语言 如何只删除一些facet标签?

slmsl1lt  于 2023-02-17  发布在  其他
关注(0)|答案(2)|浏览(172)

使用facet_wrap,是否可以只删除一些面标签?在下面的示例中,我希望物种标签只出现在每行的第一列。我知道我可以使用labeller函数,但无法更改单个标签。

data(iris)
library(tidyr)
library(ggplot2)

dat <- iris %>%
  gather(var, val, Sepal.Length:Petal.Width) 

ggplot(dat) +
  geom_point(aes(x = 1, y = val)) +
  facet_wrap(Species~var)

kmynzznz

kmynzznz1#

它一点也不完美,但我还是希望它总比没有好。
as_labeller()labeller()的使用可能会得到你所需要的。

    • 更新**

最简单的解决方案是将Speciesvar拆分为两个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)
yqlxgs2m

yqlxgs2m2#

我不知道我是否理解的很好,但我会尝试:
可以使用facet_grid代替facet_wrap
这是密码:

data(iris)
library(tidyr)
library(ggplot2)

dat <- iris %>%
  gather(var, val, Sepal.Length:Petal.Width) 

ggplot(dat) +
  geom_point(aes(x = 1, y = val)) +
  facet_grid(Species~var)

这就是结果:

相关问题