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
的参数,但没有这样的参数。 bw
是 density
的一个参数,但这可能不是 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" )
这可能不是您所需要的,但会是一个更好的起点。
我有一个关于使用 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
的参数,但没有这样的参数。 bw
是 density
的一个参数,但这可能不是 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" )
这可能不是您所需要的,但会是一个更好的起点。