【发布时间】:2018-07-23 00:12:24
【问题描述】:
我是 R 的大初学者,对 ggplot 在创建法线曲线时如何使用变量“x”感到非常困惑。
我的情况是这样的。我正在尝试在给定特定平均值和标准偏差的情况下绘制正态曲线,并且在没有数据的情况下,我见过的最常见的方法如下:
score = 1800
m = 1500
std = 300
ggplot(data.frame(x = c(300, 2700)), aes(x = x)) + stat_function(fun =
dnorm, args = list(mean = m, sd = std)) + scale_x_continuous(name
= "Score", breaks = seq(300, 2700, std))
我想对曲线的特定区域进行着色,因此我使用互联网创建了如下函数:
funcShaded <- function(x) {
y = dnorm(x, mean = m, sd = std)
y[x < score] <- NA
return(y)
}
然后在我的曲线上添加一个图层
p + stat_function(fun = funcShaded, geom="area", fill="#84CA72", alpha=.2)
这可以创建我想要的图表。但是,我对此有两个问题。首先,当我分解代码时
data.frame(x = c(300, 2700))
按照您的期望创建一个包含两项的数据框,那么它如何能够用于创建 x 轴值,并进一步传递给函数以正确使用(读取。好像它是一个列表值)?
其次,我现在想稍后重新使用这个函数来根据不同的分数填充曲线下的其他区域(例如score2 = 1630),我想我可以在funcShaded 中添加另一个变量来通过分数(即funcShaded <- function(x, score)) 然后调用我的stat_function 如下:p + stat_function(fun = funcShaded(x, score2), ...) 但是:
- 我不确定这种语法是否有效
- 似乎
x变量从未使用此代码显式“创建”,因为它没有显示在我的环境中,当我尝试此代码时,我得到错误:找不到对象'x'
所以我想我只是好奇 'x' 在这种情况下是如何工作的,以及我是否应该根据我想要做的不同来创建它。
【问题讨论】:
标签: r function dataframe ggplot2