2

ggplot がカテゴリ変数を並べ替える理由がわかりません

xaxis = c('80','90','100')
test = data.frame(x = xaxis, y = c(1,2,3))
ggplot(test, aes(x=x,y=y)) + geom_point()

ここに画像の説明を入力

因子レベルと関係があることをオンラインで発見し、次のコードで問題を解決しました。

xaxis = c('80','90','100')
xaxis = factor(xaxis,levels=xaxis)
test = data.frame(x = xaxis, y = c(1,2,3))
ggplot(test, aes(x=x,y=y)) + geom_point()

ここに画像の説明を入力

しかし、元のコードに戻ると。

class(xaxis)
[1] "character"

これは単なる文字ベクトルであり、固有の順序付けは見られません。誰かがここで何が起こっているのか説明できますか? 私のシーケンスを尊重するために、常に x 変数を ggplot の要因に変更する必要がありますか?

4

1 に答える 1

2
sort(xaxis)
[1] "100" "80"  "90"

文字ベクトルの並べ替えは、文字単位で行われます。つまり、データの数値コンテキストは理解されません。

ggplot2は文字変数を因子に変換し、デフォルトで因子はそのレベルをソートします:

factor(xaxis)
[1] 80  90  100
Levels: 100 80 90
于 2013-10-31T09:11:44.300 に答える