私は、私は本当にあなたの「新しいデータフレームを作成することなく、」要件を満たすことができますが、その場で新しいデータフレームを作成することができるとは思わない:
ggplot(transform(iris,
Species=factor(Species,levels=c("virginica","setosa","versicolor")))) +
geom_histogram(aes(Petal.Width))+ facet_grid(Species~.)
私はそれがあればいいだろう同意(1)データで行がセットの順番は(の順序とは無関係であることを
注意が...そこにこれを制御する別の方法があったが、ggplot
はすでにかなり強力な(そして複雑な)エンジンです2)のレベルはです。 #2はどのようなfactor(...,levels=...)
が変更され、何がggplot
ファセットの順序を決定するために見ています。 #1(データフレームの行を指定された順序でソート)を行うことは面白い課題です。私は、私が実際には最初の#2を実行して、これを達成すると思い、その後、係数の数値に応じてソートするorder()
やarrange()
を使用して:
neworder <- c("virginica","setosa","versicolor")
library(plyr) ## or dplyr (transform -> mutate)
iris2 <- arrange(transform(iris,
Species=factor(Species,levels=neworder)),Species)
私はすぐにこのを行うための簡単な方法を見ることができませんは因子レベルの順序を変更することなく(あなたはそれを行い、それに応じて因子レベルの順序をリセットすることができます)。
一般的に、カテゴリ変数のレベルの順序に依存するRの関数は、データセットの行の順序ではなく、要素レベルの順序に基づいています。上記の回答がより一般的に適用されます。
多分facet_grid(factor、種、レベル= c( "virginica"、 "setosa"、 "versicolor"))〜) '? [oops、does not work] –
ベンノートでは、ggplot(バープロット、ファセットなどのバー)の基本的なすべての順序を制御する方法は、因子を使用してレベルの順序を調整することです。 – joran
...またはこれ:http://stackoverflow.com/q/3311901/324364 – joran