r - 使用 R 以双对数刻度(以 10 为底)绘制分布的密度线

标签 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)

没有成功。

最佳答案

使用以 10 为底的对数正态分布的 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

关于r - 使用 R 以双对数刻度(以 10 为底)绘制分布的密度线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47044939/

相关文章:

r - 函数内的操作顺序与函数外的操作顺序不同吗?

java - 使用 Renjin 将 POJO 对象的 ArrayList 转换为 R 数据框

javascript - 使用 X,Y 坐标绘制圆内的点

用 R 重复多次相同的代码并收集最终结果

r - 在 R 中分配向量的一半

R Plotly - 绘制多条回归线

matlab - 如何在轴中使用刻度而不指定刻度的最后一个值?

python - 如何标准化seaborn distplot?

ios - 我可以通过 99 美元的发布者帐户 OTA 共享 ipa 文件而不收集 UDID

r - 提取直方图 R 后面的数字