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.

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 `ggplot2`

.

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

Licensed under: CC-BY-SA with attribution

Not affiliated with: Stack Overflow