我有要绘制为直方图的数据。这是我的数据

convergence,rules,fact,time
1,domain,1802,8629
1,domain,1802,8913
1,rdfs,595,249
1,domain,1,9259
1,videcom,1,9071
2,domain,314151,9413
2,rdfs,8,253
....


我要绘制的是每个convergence值,每个timerules之和

这是我到目前为止所做的

库(ggplot2)

w <- read.csv(file="s2.csv", head=TRUE, sep=",")

p <- ggplot(data=w, aes(group=convergence, x=factor(rules))) + geom_bar(aes(colour="red")) + + geom_text(aes(y=time + 1000, colour="red", label=time)) + facet_grid( convergence ~ . )

ggsave(file="s2.1m.png", width=15)


但是结果并没有像我想要的那样每个times的总和。

简单地说

我想要每个rules值的直方图代表其相应的rules值的总和



我在这里想念什么?

最佳答案

您需要使用weights美学。这将通过仓的值对每个仓的计数加权。

ggplot(w, aes(x=rules, weights=time)) +
  geom_bar() + facet_grid(convergence ~ .) +
  geom_text(stat="bin", aes(label=..count..), color="red", vjust=-0.1)




为了使文本起作用,我们需要使用stat="bin",这与geom_bar()隐式执行的操作相同。然后,我们可以使用特殊值..count..,该值引用在计算统计信息后内部产生的数据框ggplot中的一列。

关于r - 如何用ggplot2中列的总和来进行直方图显示?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27545024/

10-12 17:45