0

次のデータがあり、y 軸の順序付けに問題があります =

> str(dat)
'data.frame':   3678 obs. of  41 variables:
 $ highest_bid                 : Factor w/ 140 levels "\\N","0","10",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ age_of_oldest_driver        : Factor w/ 75 levels "18","19","20",..: 66 11 33 24 57 3 17 5 32 22 ...

年齢に最高入札単価をプロットすると、目的のプロットが得られますが、年齢は因子の順に並べられており、これは私が望むものではありません。y 軸は 180、19、200、2300、25、230、250 などになります。19、25、2300 などの値があるため、y 軸の順序が崩れます。以下のプロットを参照してください。

ggplot(dat, aes(x=factor(age_of_oldest_driver), y=highest_bid)) + 
      stat_summary(fun.y="mean", geom="bar")

さて、この問題をいじるためにいくつかのサンプル データを生成しましたが、再現できないようです。これが私がしたことです。繰り返しますが、これは完全に機能します。

df=data.frame(score=c(400,200,3000,500,751,630,554,630,100,250,330,5100,4100,800),
              age=c(18,18,23,50,19,39,19,23,22,22,40,35,22,16))
str(df)
ggplot(df, aes(x=factor(age), y=factor(score))) + geom_bar()

library(plyr)
library(ggplot2)
ggplot(ddply(df, .(age), mean), aes(x=factor(age), y=factor(score))) + geom_bar()

私が公開した最初のコードで何が間違っているのかについてのアイデア。

ありがとう!!

これが間違ったイメージです。y 軸に注意してください。

ここに画像の説明を入力

4

1 に答える 1

1

プロットする前に、元の因子 (年齢) を並べ替えることができます

df$ageord <- factor(df$age, levels = levels(factor(df$age)), ordered = TRUE )

require(ggplot2)
ggplot(df, aes(x=ageord, y = score)) + geom_bar(stat = "identity")

編集:うまくいかない場合

df$ageord <- factor(df$age, levels = sort(unique(df$age)), ordered = TRUE )

ggplot(df, aes(x=ageord, y = score)) + geom_bar(stat = "identity")
于 2012-08-08T15:47:21.997 に答える