【问题标题】:How to remove only some facet labels?如何仅删除一些构面标签?
【发布时间】:2019-06-08 06:01:01
【问题描述】:

使用facet_wrap,是否可以只删除一些分面标签? 在下面的示例中,我希望 Species 标签仅出现在每行的第一列中。我知道我可以使用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)

【问题讨论】:

  • 尝试更改 labeller 参数。我刚刚看到你在你的帖子中提到了它。我的错!

标签: r ggplot2 facet-wrap


【解决方案1】:

我不知道我是否理解得很好,但我会尝试:

您可以使用 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)

这是结果:

【讨论】:

  • 谢谢,但这不是我想要的。正如我所说,我希望 Species 标签只出现在每行构面的第一列中。
【解决方案2】:

它一点也不完美,但我会发布这个希望总比没有好。

使用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) 

【讨论】:

  • 为什么我会看到这个错误: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))?
  • 您使用的是哪个版本的ggplot2?在3.2.1 目前有效。如果您仍然失败,请尝试使用干净的环境。
  • 谢谢!是版本问题,更新解决了。
猜你喜欢
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 2014-10-27
  • 1970-01-01
  • 1970-01-01
  • 2016-12-13
  • 2020-05-02
  • 1970-01-01
相关资源
最近更新 更多