R 基本图:在 1 个图中绘制 2 个密度图,并为 x 轴和 y 轴绘制悬挂刻度

R baseplot :plotting 2 density plots in 1 plot cand hanging scales for x-Axis and y-Axis

我有一个关于使用 baseplot 系统在 R 中绘图的问题: 我想在 1 个图中绘制 2 个密度图。为此,他们需要具有相同的比例。我设法改变了比例,以便我可以将它们绘制成 2 个不同的图。这正是我希望它们看起来像的样子:

 mexp = NULL
 for (i in 1 : 1000) mexp = c(mexp, mean(rexp(1000, 0.2)))
 hist(mexp, col="lightblue", main = "Averages of 40 exponentials")

plot(density(rnorm(1000,mean= 5)), bw=11,col="red" )
plot(   density( mexp , frequency(F)  ), col="green")  # frequency(F) adjusts the y-Axis

当我尝试将它们绘制成一个图时,它不起作用:我只看到第一个图。我这样做了:

plot(density(rnorm(1000,mean= 5)), bw=11,col="red" )
line(   density( mexp , frequency(F) , col="green" )) 

有人可以帮助我吗?谢谢!

这段代码更好,但仍然包含一些废话。

首先,您似乎在比较错误的分布。您的 mexp 数据看起来合理。但是,看起来您正在尝试将其与均值 = 5 且标准差 = 1 的正态分布进行比较。平均值非常接近 mexp 数据的平均值,但 mexp 数据的平均值为 0.157。你不会得到太多这样的比赛。

接下来的代码有一些错误和一些绝对的垃圾。你的第一个情节是:

plot(density(rnorm(1000,mean= 5)), bw=11,col="red" )

除了正态分布的标准偏差不合适之外,您将 bw=11 作为 plot 的参数,但没有这样的参数。 bwdensity 的一个参数,但这可能不是 bw 在此数据上的好选择。让我们使用默认选择 bw 绘制它,并在以后根据需要进行调整。所以你的第一条曲线的更好版本是:

plot(density(rnorm(1000,mean=5, sd=sd(mexp)), ),col="red" )

接下来,你有

line(   density( mexp , frequency(F) , col="green" )) 

一个函数line,但这不是你想要的。您正在寻找 lines。使用 lines 您正在绘制另一个密度。参数 col="green" 放错地方了。当它应该作为 lines 的参数时,您将它作为 density 的参数。然后是frequency(F)。这是胡言乱语。这里 F 将被视为逻辑值 FALSE。 frequency 会将其视为一个时间序列并找到频率,以便给出值 1。然后您将其作为 density 的第二个参数提供,因此它将被视为带宽。这完全是胡说八道。让我们删除它。剩下的就是 lines(density(mexp), col="green") 将所有这些放在一起,我们得到:

plot(density(rnorm(1000,mean=5, sd=sd(mexp)), ),col="red" )
lines(density(mexp) , col="green" )

这可能不是您所需要的,但会是一个更好的起点。