用R绘制log-log标度(基数10)的分布密度线

时间:2017-10-31 21:40:04

标签: r plot distribution

我知道参数log="xy",但我不知道你是否可以控制对数刻度的基数(我的猜测是10可能是默认值(?)),而我不是在下面的具体问题上获得幸运...

如何用R重现以下图(from this source)。特别是,我遇到了基准10 x和y轴的问题。

enter image description here

撇开电力法红线,我正在玩

x = rlnorm(1e4,0,10)
h = hist(x, prob=T, plot=F)
plot(h$count, log="xy", type="l", lend=2)

没有成功。

1 个答案:

答案 0 :(得分:2)

在base10中使用lognormal的pdf

enter image description here

[将其推广到其他日志基础非常简单。]

然后我们可以在log10-log10比例上绘制pdf。

(GG)作图

# lognormal base log10 pdf, w is in log10
lognorm_base10 <- function(w, mu, sigma) {
    log10(exp(1)) / (sqrt(2*pi*sigma^2) * 10^w) * exp(- (w - mu)^2 / (2 * sigma^2));
}

# Generate data for mu = 0, sigma = 10 
x <- seq(0, 10, length.out = 100);
y <- lognorm_base10(x, 0, 10);

# Plot
require(ggplot2);
gg <- ggplot(data.frame(x = x, y = y), aes(x, y));
gg <- gg + geom_line() + scale_y_log10();
gg <- gg + labs(x = "log10(x)", y = "log10(p)")

enter image description here

没有ggplot的绘图

plot(x, log10(y), type = "l")

enter image description here