制作堆积矩形而不是列的直方图

时间:2012-06-05 08:06:07

标签: r

使用以下代码,我得到如下的直方图

x <- rnorm(100)
hist(x,col="gray")

如何将条形图显示为堆叠矩形(通过轮廓可见,而不是填充颜色的变化)而不是统一列?每个矩形代表一个频率,例如,1,虽然我希望能够通过参数改变它。

histogram

2 个答案:

答案 0 :(得分:2)

来自this question的回答(h / t Vincent Zoonekynd)。

x <- rnorm(100)
hist(x,col="gray")
abline(h=seq(5,40,5),col="white")

答案 1 :(得分:0)

这是一个让你入门的函数(它实际上是对tkBrush包中TeachingDemos函数的部分示例的修改:

     rechist <- function(x,...){
         tmp <- hist(x,plot=F)
         br <- tmp$breaks
         w <- as.numeric(cut(x,br,include.lowest=TRUE))
         sy <- unlist(lapply(tmp$counts,function(x)seq(length=x)))
         my <- max(sy)
         sy <- sy/my
         my <- 1/my
         sy <- sy[order(order(x))]
        plot.new()
        plot.window(xlim=range(br), ylim=c(0,1))
         rect(br[w], sy-my, br[w+1], sy, 
            border=TRUE, col='grey')
         rect(br[-length(br)], 0, br[-1], tmp$counts*my)
        axis(1)
     }

rechist( iris$Petal.Length )