I'm trying to generate a histogram in R with a logarithmic scale for y. Currently I do:
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.
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.
Another option would be to use the package
ggplot(mydata, aes(x = V3)) + geom_histogram() + scale_x_log10()