我喜歡稍微替代方法。基本上,數據在創建繪圖之前被複制,爲所有數據添加一組新的數據。我寫了以下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")
完美!你是否也知道把全部變成另一個字符串有多難?非常感謝您的幫助。 –
不難。只需在代碼中進行更改即可。 – Roland
完美,按預期工作。不知道'轉換'技巧(同時也學習'mutate')。再次感謝你的幫助。 –