从最低到最高顺序排列y轴刻度

时间:2012-08-08 15:40:17

标签: r ggplot2

我有以下数据,并且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轴。

enter image description here

1 个答案:

答案 0 :(得分: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")