Histogram with Logarithmic Scale and custom breaks

后端 未结 7 1872
谎友^
谎友^ 2020-11-27 16:33

I\'m trying to generate a histogram in R with a logarithmic scale for y. Currently I do:

hist(mydata$V3, breaks=c(0,1,2,3,4,5,25))

This giv

相关标签:
7条回答
  • 2020-11-27 17:04

    I've put together a function that behaves identically to hist in the default case, but accepts the log argument. It uses several tricks from other posters, but adds a few of its own. hist(x) and myhist(x) look identical.

    The original problem would be solved with:

    myhist(mydata$V3, breaks=c(0,1,2,3,4,5,25), log="xy")
    

    The function:

    myhist <- function(x, ..., breaks="Sturges",
                       main = paste("Histogram of", xname),
                       xlab = xname,
                       ylab = "Frequency") {
      xname = paste(deparse(substitute(x), 500), collapse="\n")
      h = hist(x, breaks=breaks, plot=FALSE)
      plot(h$breaks, c(NA,h$counts), type='S', main=main,
           xlab=xlab, ylab=ylab, axes=FALSE, ...)
      axis(1)
      axis(2)
      lines(h$breaks, c(h$counts,NA), type='s')
      lines(h$breaks, c(NA,h$counts), type='h')
      lines(h$breaks, c(h$counts,NA), type='h')
      lines(h$breaks, rep(0,length(h$breaks)), type='S')
      invisible(h)
    }
    

    Exercise for the reader: Unfortunately, not everything that works with hist works with myhist as it stands. That should be fixable with a bit more effort, though.

    0 讨论(0)
提交回复
热议问题