Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向使用plotrix库创建的图形添加线_R - Fatal编程技术网

向使用plotrix库创建的图形添加线

向使用plotrix库创建的图形添加线,r,R,我已经使用plotrix库中的multhist函数创建了一个堆叠直方图,但我无法向该直方图添加直线。我通常使用的代码在这种设置下似乎不起作用 这里有一个例子。我试图将总体分布的平均值和标准误差添加为直方图上的简单垂直线,但这些都不能正常工作。我做错了什么 library(plotrix) test1<-rnorm(30,0) test2<-rnorm(30,0) test3<-rnorm(30,0) forstats<-c(test1,test2,test3) mn&

我已经使用
plotrix
库中的
multhist
函数创建了一个堆叠直方图,但我无法向该直方图添加直线。我通常使用的代码在这种设置下似乎不起作用

这里有一个例子。我试图将总体分布的平均值和标准误差添加为直方图上的简单垂直线,但这些都不能正常工作。我做错了什么

library(plotrix)

test1<-rnorm(30,0)
test2<-rnorm(30,0)
test3<-rnorm(30,0)

forstats<-c(test1,test2,test3)
mn<-mean(forstats)
se<-std.error(forstats)

together<-list(test1,test2,test3)
multhist(together, col=c(7,4,2), space=c(0,0), beside=FALSE,right=FALSE)

abline(v=mn)
abline(v=mn+se)
abline(v=mn-se)
库(plotrix)

test1
multhist
使用
barplot
,因此,正如@BenBolker提到的,x轴对应于bin索引。在本机坐标和bin索引单位之间转换有点棘手,因此我为叠加直方图(无论如何,对于频率)编写了另一个函数:


在我看来,x轴标签可能比
multhist
更合适,因为
multhist
意味着计数与中间箱子值有关,而上面很明显,x轴标记描绘了箱子。

您打算使用
multhist
,或者你会喜欢基本的
hist
解决方案吗?可能应该是
max\cnt
histstack <- function(x, breaks, col=rainbow(length(x)), ...) {
  col <- rev(col)
  if (length(breaks)==1) {
    rng <- range(pretty(range(x)))
    breaks <- seq(rng[1], rng[2], length.out=breaks)
  }
  h <- lapply(x, hist, plot=FALSE, breaks=breaks)
  cumcounts <- apply(sapply(h, '[[', 'counts'), 1, cumsum)

  for(i in seq_along(h)) {
    h[[i]]$counts <- cumcounts[nrow(cumcounts) - i + 1, ]
  }
  max_cnt <- max(sapply(h, '[[', 'counts'))
  plot(h[[1]], xlim=range(sapply(h, '[', 'breaks')), yaxt='n',
       ylim=c(0, max(pretty(max_cnt))), col=col[1], ...)
  sapply(seq_along(h)[-1], function(i) plot(h[[i]], col=col[i], add=TRUE, ...))
  axis(2, at=pretty(c(0, max_cnt)), labels=pretty(c(0, max_cnt)), ...)  
}
histstack(together, seq(-3, 3, 0.5), col=c(7, 4, 2), main='', 
          las=1, xlab='', ylab='')

abline(v=c(mn, mn+se, mn-se), lwd=2, )