@joran などが述べたように、facet_grid の順序付けは因子列のレベルに基づいています。
relevel
順序を変更するために使用できます。(元の列を変更するか、新しい列を作成します)
df_all[["newGroup"]] <- relevel(df_all[["group"]], "value1")
## OR:
df_all[["group"]] <- relevel(df_all[["group"]], "value1")
アップデート:
私の utils ファイルには次の関数がありますrelevel
。ただし、@DWin が以下のコメントで指摘しているようにrelevel
、 の値として複数のレベルでは機能しませんref
。
そのような状況でsetFactorOrder
は、おそらく役に立ちます
setFactorOrder <- function(x, order=sort(levels(x))) {
# Returns a factor ordered by `order`.
# If order is missing, defaults to `levels(x)` if available, else to `sort(unique(x))`
# Useful for ggplot and elsewhere were ordering is based on the order of the levels
if (!is.factor(x)) {
warning("`x` is not a factor. Will coerce.")
levs <- sort(unique(x))
if (missing(order))
order <- levs
} else {
levs <- levels(x)
}
# any values in order, not in levels(x)
NotInx <- setdiff(order, levs)
if (length(NotInx)) {
warning ("Some values not in x:\n", paste(NotInx, collapse=", "))
}
# levels(x) not explicitly named in order
Remaining <- setdiff(levs, order)
order <- c(setdiff(order, NotInx), Remaining)
factor(x, level=order)
}
次のように、 の結果を割り当てる必要があることに注意してくださいsetFactorOrder
。
x <- setFactorOrder(x, c("value1", "value2"))
# or
df_all[["group"]] <- setFactorOrder(df_all[["group"]], c("Ketchup", "Catsup", "Mustard"))