Сводный график фасетов 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")