14

facet_wrap我在文档中有类似于此示例的数据:


(来源:ggplot2.org

我想使用所有数据用整体视图填充最后一个方面。

有没有一种简单的方法可以添加“总”方面facet_wrap?添加边距很容易facet_grid,但该选项在facet_wrap.

注意:facet_grid如果您想要上图中的象限,则不能使用 using ,ncolnrow需要facet_wrap.

4

3 回答 3

14
library(ggplot2)

p <- qplot(displ, hwy, data = transform(mpg, cyl = as.character(cyl)))
cyl6 <- subset(mpg, cyl == 6)
p + geom_point(data = transform(cyl6, cyl = "7"), colour = "red") +
  geom_point(data = transform(mpg, cyl = "all"), colour = "blue") +
  facet_wrap(~ cyl)

在此处输入图像描述

于 2013-09-21T15:15:57.620 回答
8

我更喜欢稍微替代的方法。本质上,在创建绘图之前复制数据,并为所有数据添加一组新数据。我编写了以下CreateAllFacet函数来简化该过程。它返回一个包含重复数据和一个附加列的新数据框facet

library(ggplot2)

#' Duplicates data to create additional facet
#' @param df a dataframe
#' @param col the name of facet column
#'  
CreateAllFacet <- function(df, col){
  df$facet <- df[[col]]
  temp <- df
  temp$facet <- "all"
  merged <-rbind(temp, df)

  # ensure the facet value is a factor
  merged[[col]] <- as.factor(merged[[col]])

  return(merged)
}

将新列添加facet到原始数据的好处是它仍然允许变量cylinder用于在美学范围内为图中的点着色:

df <- CreateAllFacet(mpg, "cyl")

ggplot(data=df, aes(x=displ,y=hwy)) +
  geom_point(aes(color=cyl))  +
  facet_wrap(~ facet) +
  theme(legend.position = "none")

在此处输入图像描述

于 2017-10-29T16:23:43.410 回答
-4

您可以在 facet_wrap 中尝试“margins”选项,如下所示:

library(ggplot2)

p <- qplot(displ, hwy, data = transform(mpg, cyl = as.character(cyl)))
cyl6 <- subset(mpg, cyl == 6)
p + geom_point(data = transform(cyl6, cyl = "7"), colour = "red") +
  facet_wrap(~ cyl, margins=TRUE)
于 2016-03-18T02:07:36.387 回答