我可以像这样结合密度和频率图
hist(ex, col="red", prob=TRUE)
lines(density(ex), col="red")
但也可以在每一侧都有两个轴?举个例子:
更新:取决于实际数据的解决方案:
#margin from right
par(mar=c(5, 4, 4, 4) + 0.1)
hist(ex, col="red", prob=TRUE)
lines(density(ex), col="red")
# axis ticks
axis(4, at=seq(0,0.4,0.1)*50, labels=seq(0,0.4,0.1)*2500)
# axis label
mtext("Frequency", side=4, line=3)
答案 0 :(得分:0)
重新评论:根据上面的代码,您可以使用基础R 快速查看公式 - 您无需手动定义轴。显而易见的困难是密度或频率不是漂亮的/圆形的数字(如果你想要它们都是圆的那么蜱可能会在不同的地方)。我认为以规定的间隔保持密度更为明智。这也需要不断休息。
对于绘图,我将密度分配给LHS轴,但这很容易调整。
histfreq <- function(X, lines=TRUE, ...) {
par(mar=c(5, 4, 4, 4) + 0.1)
h <- hist(X, plot=FALSE)
n.obs <- length(na.omit(X))
d <- density(na.omit(X))
h <- hist(X, prob=TRUE, yaxt="n",ylim = c(0,max(h$density,d$y)*1.1),...)
# axis ticks and labels
# y
axis(2, at = pretty(c(0,h$density)),
labels = formatC( pretty(c(0,h$density)), digits = 1, format = "f"))
# 2nd y
axis(4, at = pretty(c(0,h$density)),
labels = formatC(signif(pretty(c(0,h$density)) * n.obs *
unique(diff(h$breaks)), digits = 2), digits=0, format = "f"))
mtext("Frequency" , side=4, line=3)
if (lines) lines(d, ...)
}
# Call plot
histfreq(rnorm(57), col="red")