簡體   English   中英

向使用plotrix庫創建的圖形添加線

[英]Adding lines to graph created using plotrix library

我已經在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)

multhist使用barplot ,因此,正如@BenBolker 在此處提到的那樣,x軸對應於bin索引。 在本機坐標和bin索引單位之間進行轉換有點棘手,因此我為堆疊的直方圖組合了另一個函數(無論如何對於頻率):

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, )

在此處輸入圖片說明

IMO的x軸標記可能比multhist標記更合適,因為multhist暗示計數與中間bin值相關,而在上面很明顯,x軸刻度線勾勒了bin。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM