我想绘制一个直方图,其中 y 轴代表一列的总和。我找到了分类数据的这个例子: R histogram that sums 而不是 frequency。但是,这不是我要找的,因为它不适用于连续数据,我必须在其中定义垃圾箱。
假设我有 x 和 y:
set.seed(1)
mydata <- data.frame(y = runif (100, min= 0, max = 1),
x = rpois(100, 15) * 10)
Run Code Online (Sandbox Code Playgroud)
传统的直方图如下所示:
hist (mydata$x)
Run Code Online (Sandbox Code Playgroud)

现在如何获得 y 轴上 y 的累积总和?
这是解决此问题的一种方法,它利用 hist() 函数来完成大部分繁重的工作,并且优点是 y 的累积和的条形图与 x 的直方图的 bin 和维度相匹配:
set.seed(1)
mydata <- data.frame(y = runif (100, min= 0, max = 1), x = rpois(100, 15) * 10)
mx <- mydata$x
my <- mydata$y
h <- hist(mydata$x)
breaks <- data.frame(
"beg"=h$breaks[-length(h$breaks)],
"end"=h$breaks[-1]
)
sums <- apply(breaks, MARGIN=1, FUN=function(x) { sum(my[ mx >= x[1] & mx < x[2] ]) })
h$counts <- sums
plot(h, ylab="Sum", main="Sum of y Within x Bins")
Run Code Online (Sandbox Code Playgroud)
