Как удалить только некоторые фасетные метки? - PullRequest
0 голосов
/ 14 января 2019

Используя 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)

enter image description here

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Это не совсем идеально, но я опубликую это надеясь, что все еще лучше, чем ничего.

Использование 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)))

enter image description here

0 голосов
/ 14 января 2019

Не знаю, правильно ли я понимаю, но попробую:

Вы можете использовать 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)

Это результат: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...