所以,我的数据集看起来像这样:
id group age length Bnull_subject Bnull_object Bnull_other
1 NS 23 NA 3 3 1
2 NS 23 NA 1 4 0
3 NS 58 NA 4 4 1
4 NS 24 NA 2 3 1
5 NS 32 NA 3 2 0
6 NS 24 NA 4 1 1
7 NS 25 NA 5 2 0
8 NS 24 NA 3 2 0
9 NS 25 NA 3 2 0
22 ATT 26 [5-7] 4 4 0
23 ATT 28 [5-7] 4 1 0
24 ATT 28 [5-7] 5 3 1
25 ATT 28 [5-7] 1 5 1
26 ATT 26 [5-7] 4 2 0
27 ATT 29 [5-7] 3 2 0
我正在尝试用yg轴上的ggplot创建一个条形图,但由于某些原因我无法正常工作..这是我使用的代码
dset.bnull <- subset(dset, select = c(group, length, Bnull_subject, Bnull_object, Bnull_other))
library(reshape2)
library(ggplot2)
library(scales)
mdat <- melt(dset.bnull[c(1,3:5)], id.vars="group") #?melt <- Converts an object into a molten data frame
head(mdat) #Shows top observations of your data
ggplot(mdat, aes(variable, value, fill = group)) +
geom_bar(aes(y = (value)/sum(value)), stat = "identity", position=position_dodge(1)) +
scale_y_continuous(labels = percent) + #Use percentage on y axis
xlab("Referent") + #Rename x axis
ylab("Percentage of Answers") + #Rename y axis
guides(fill=guide_legend(title="Experimental \nGroup"))
我得到的情节是......(显然这是错误的)
关于我应该做什么的任何帮助?
提前谢谢
答案 0 :(得分:0)
我认为你的melt
错了。
尝试
mdat <- melt(dset.bnull[c(1:2, 5:7)], id.vars=c("id", "group"))
并删除
position=position_dodge(1)
来自geom_bar
来电。
更新:根据您的评论,我猜你很自在地使用dplyr
。在总结数据后进行绘图会更直观。
plot_data = mdat %>% group_by(group, variable) %>% summarise(total = sum(value))
ggplot(plot_data, aes(fill = group)) +
geom_bar(aes(x = variable,
y = (total)/sum(total)),
stat = "identity",
position = "dodge") +
scale_y_continuous(labels = percent) +
xlab("Referent") +
ylab("Percentage of Answers") +
guides(fill=guide_legend(title="Experimental \nGroup"))