On 05/01/2017 11:01 AM, Dan Abner wrote:
Hi all,

Is anyone aware of a package, function, or general R trick that would make
generating histograms like the one in the attachment easy in R (i.e.,
without manually drawing each individual horizontal line and specifying the
coordinates for a textbox for each number)?

I need to make ~12 of these for different samples of n=25, so the manual
approach would be very painful...

You can write a function to do this pretty easily. hist(..., plot=FALSE) does all the calculations for you; you just need to write the loop to draw the boxes. For example,

myhist <- function(x) {
  histvals <- hist(x, plot = FALSE)
  with(histvals, {
    plot(range(breaks), range(c(0, counts)), type = "n")

    for (i in seq_along(histvals$counts)) {
      keep <- (breaks[i] < x & x <= breaks[i+1]) |
              (i == 1 & x == breaks[1])
      vals <- x[keep]
      for (j in seq_along(vals)) {
        rect(breaks[i], j-1, breaks[i+1], j)
        text(mids[i], j-0.5, vals[j])
      }
    }
  })
}

x <- round(rnorm(20, mean=166, sd=4))
myhist(x)

Duncan Murdoch

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to