# Histogram with Logarithmic Scale and custom breaks

### Question

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 gives me a histogram, but the density between 0 to 1 is so great (about a million values difference) that you can barely make out any of the other bars.

Then I've tried doing:

``````mydata_hist <- hist(mydata\$V3, breaks=c(0,1,2,3,4,5,25), plot=FALSE)
plot(rpd_hist\$counts, log="xy", pch=20, col="blue")
``````

It gives me sorta what I want, but the bottom shows me the values 1-6 rather than 0, 1, 2, 3, 4, 5, 25. It's also showing the data as points rather than bars. `barplot` works but then I don't get any bottom axis.

1
72
6/1/2017 7:20:19 PM

A histogram is a poor-man's density estimate. Note that in your call to `hist()` using default arguments, you get frequencies not probabilities -- add `,prob=TRUE` to the call if you want probabilities.

As for the log axis problem, don't use 'x' if you do not want the x-axis transformed:

``````plot(mydata_hist\$count, log="y", type='h', lwd=10, lend=2)
``````

gets you bars on a log-y scale -- the look-and-feel is still a little different but can probably be tweaked.

Lastly, you can also do `hist(log(x), ...)` to get a histogram of the log of your data.

60
8/7/2009 3:14:13 PM

Another option would be to use the package `ggplot2`.

``````ggplot(mydata, aes(x = V3)) + geom_histogram() + scale_x_log10()
``````