我正在使用ggplot2来生成平均值(不是计数)的堆积条形图。这可以使用以下代码正常工作:
new.stop <- read.delim("New_stop_data.txt")
A <- ggplot(new.stop, aes(x=Consonant, y=(Duration*1000), fill = Label)) + stat_summary(fun.y="mean", geom="bar") + coord_flip() + theme_bw() + ylab("Duration (ms)") + xlab("Stop")
A + scale_fill_grey()
以这种方式绘制事物原则上工作正常并产生以下plot。但是,“投票”和“结束”等级的顺序应该颠倒,右边是投票。我试图通过使用relevel()和另外的factor()来解决这个问题,如下所示:
new.stop$Label <- relevel(new.stop$Label, ref="vot")
new.stop$Label <- factor(new.stop$Label, levels = c("vot", "closure"), labels=c("VOT", "Closure"))
然而,正如您所看到的,这只会产生barplot where both values are merged。我甚至试图在ggplot2中重新排序,但无济于事。由于这些数据不是计数数据(并且ggplot2假设您只使用条形图的计数数据),我一直无法找到任何似乎在这里工作的帮助。非常感谢任何帮助。
PS:对于我正在做的事情,barplots是典型的。答案 0 :(得分:2)
对不起。我在访问用户提供的数据之后编辑了我的答案,几个小时后。
从提供的数据来看,我首先要看看它应该如何排列,数字化。
dat&lt; - read.delim(.. \ New_stop_data.txt)
head(subset(dat, select = c(Consonant, Label, Duration)))
Consonant Label Duration
1 /p/ closure 0.127097695
2 /p/ vot 0.007426832
3 /p/ closure 0.128724749
4 /p/ vot 0.006942377
5 /p/ closure 0.116493725
6 /p/ vot 0.007421805
将其总结为计数
ddply(dat, .(Consonant, Label), summarise, length(Duration*1000))
Consonant Label D
1 /k/ closure 119
2 /k/ vot 119
3 /kw/ closure 75
4 /kw/ vot 75
5 /p/ closure 117
6 /p/ vot 117
7 /t/ closure 116
8 /t/ vot 116
情节计数
ggplot(dat, aes(x=Consonant), y=(Duration*1000)) +
geom_bar(aes(fill = Label), stat="bin") +
coord_flip() +
theme_bw() +
labs(list = c(x="Duration (ms)", y='Stop')) +
scale_fill_grey()+
guides(fill = guide_legend(reverse = TRUE))
和手段
ddply(dat, .(Consonant, Label), summarise, D = mean(Duration*1000))
Consonant Label D
1 /k/ closure 108.35499
2 /k/ vot 26.52917
3 /kw/ closure 122.28891
4 /kw/ vot 31.46828
5 /p/ closure 135.90023
6 /p/ vot 11.27705
7 /t/ closure 124.73526
8 /t/ vot 16.91066
ggplot(dat, aes(x=Consonant, y=(Duration*1000))) +
geom_bar(stat="summary", fun.y = mean, aes(fill = Label)) +
coord_flip() +
theme_bw() +
labs(list(y="Duration (ms)", x='Stop')) +
scale_fill_grey() +
guides(fill = guide_legend(reverse = TRUE))
答案 1 :(得分:2)
当你开始使用统计数据时,有一些深度魔法。或者至少,这是我的愚昧观点。无论如何,更好的是:
有一些有趣的东西正在进行聚合的顺序。按照上面的说法,它最初按预期工作,无需重新订购等级或任何东西:
ggplot(new.stop, aes(x=Consonant, y=(Duration*1000))) + geom_bar(stat="summary", fun.y = mean, aes(fill = Label)) + coord_flip() + theme_bw() + ylab("Duration (ms)") + xlab("Stop") + scale_fill_grey()
FWIW,这就是我个人倾向于避免统计数据的原因。当我首先进行数据汇总(使用plyr或dplyr或其他东西)然后ggplot汇总表时,我总能获得更可预测的结果。