> I would like to be able to plot histograms/densities on a semi-log or > log-log scale.
> # Get a random log-normal distribution > r <- rlnorm(1000) > > # Get the distribution without plotting it using tighter breaks > h <- hist(r, plot=F, breaks=c(seq(0,max(r)+1, .1))) > > # Plot the distribution using log scale on both axes, and use > # blue points > plot(h$counts, log="xy", pch=20, col="blue", > main="Log-normal distribution", > xlab="Value", ylab="Frequency") > > This is very close to what I need, but how can I have filled rectangles > in the plot, so that it looks more like a traditional histogram? You can use type="h" to specify histogram-like plotting. You probably also want to use a linear y-scale to make frequencies easier to compare. Change the last line to: plot(h$mids, h$counts, log="x", pch=20, col="blue", main="Log-normal distribution", xlab="Value", ylab="Frequency", type="h") Alternatively, plot a histogram of the log data, and draw your own axes: logr <- log(r) par(las=2) h2 <- hist(logr, axes=FALSE, breaks=seq(min(logr)-1, max(logr)+1, .5)) Axis(side=2) Axis(side=1, at=h2$mids, labels=format(exp(h2$mids), digits=1), lty=NULL) Or, even better, install the ggplot2 package and try something like: qplot(r, geom="histogram") + scale_x_continuous(trans="log10") Regards, Richie. Mathematical Sciences Unit HSL ------------------------------------------------------------------------ ATTENTION: This message contains privileged and confidential inform...{{dropped:22}} ______________________________________________ R-help@r-project.org mailing list 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.