我整理了一个函数,它在默认情况下的行为与hist相同,但是接受log参数。它使用了其他海报的一些技巧,但又增加了一些技巧。hist(x)
和myhist(x)
外观是相同的。
原始问题将通过以下方式解决:
myhist(mydata$V3, breaks=c(0,1,2,3,4,5,25), log="xy")
功能:
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)
}
读者练习:不幸的是,并非所有与历史有关的东西都与myhist兼容。不过,应该可以更轻松地解决此问题。