我正在尝试显示一个并排的条形图,以比较2列之间每个字母等级的计数。 (A彼此相邻,B彼此相邻等等)
> dat = data.frame(grade1 = c('A','A','A','B','B','C'), grade2 = c('A','B','C','C','D','D'))
> dat
grade1 grade2
1 A A
2 A B
3 A C
4 B C
5 B D
6 C D
> ggplot(dat, aes(x=grade1, fill=grade2)) +
geom_bar(position=position_dodge())
我正在尝试在x轴(A,B,C,D)上带有4个标签的结果看起来像这样。我应该使用特定的dplyr函数吗?
https://i0.wp.com/martinsbioblogg.files.wordpress.com/2014/03/means-barplot.png
最佳答案
您需要以整齐的形式转换数据框。为此,您可以使用tidyr
包功能gather
。为了确保使用有序因子对字母等级进行正确的排序是合适的:
library(tidyr)
library(ggplot2)
dat <- data.frame(grade1 = c('A','A','A','B','B','C'), grade2 = c('A','B','C','C','D','D'))
tidy_dat <- gather(dat)
tidy_dat[,2] <- ordered(tidy_dat[,2], levels = c('A','B','C','D'))
ggplot(tidy_dat, aes(x= value, fill = key))+
geom_bar(position = 'dodge')
关于r - 与ggplot并排的barplot,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42084775/