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