Сводный график фасетов ggplot2 как фасета

Часто мы производим фасеты для декомпозиции данных в соответствии с переменной, но нам все же хотелось бы видеть сводку в виде стека фасетов. Вот пример:

library(ggplot2)
ggplot(data=iris, aes(x=Sepal.Length,y=Petal.Length)) +
    geom_point(aes(color=Species)) +
    facet_wrap(~Species, ncol=2)

фазовый график данных радужной оболочки

Однако мне также хотелось бы, чтобы одним из аспектов было наложение трех аспектов:

ggplot(data=iris, aes(x=Sepal.Length,y=Petal.Length)) +
    geom_point(aes(color=Species)) 

этот график будет добавлен в качестве четвертой панели на предыдущем фасетном графике

Есть ли способ сделать это легко?

Большое спасибо,

1 ответ

Решение

Я написал следующую функцию, чтобы дублировать набор данных и создать дополнительную копию данных в переменной all,

library(ggplot2)

# Create an additional set of data    
CreateAllFacet <- function(df, col){
  df$facet <- df[[col]]
  temp <- df
  temp$facet <- "all"
  return(rbind(temp, df))
}

Вместо того, чтобы перезаписывать исходный столбец данных фасета, функция создает новый столбец с именем facet, Преимущество этого заключается в том, что мы можем использовать исходный столбец, чтобы указать эстетику точки сюжета.

df <- CreateAllFacet(iris, "Species")

ggplot(data=df, aes(x=Sepal.Length,y=Petal.Length)) +
  geom_point(aes(color=Species)) +
  facet_wrap(~facet, ncol=2)

Я чувствую, что легенда в этом случае является необязательной, поскольку она в значительной степени дублирует информацию, уже имеющуюся в сюжете. Это может быть легко скрыто с дополнительной линией + theme(legend.position = "none")

Другие вопросы по тегам