r - 对两条曲线之间的数据进行子集化
问题描述
您在此图像中看到四个图。1) 中间绿色曲线,2) 上黑色曲线,3) 下黑色曲线,4) 蓝色散点图。
我以数据框的形式拥有所有这些:
蓝色散点图:
df <- mtcars
geom_point(df, aes(x,y), color = 'blue')
绿色曲线:
geom_smooth(formula=y~x, method='loess', color='green3', se=FALSE, size=0.5)
上曲线:
geom_smooth(formula=y+1~x, method='loess', color='gray20', se=FALSE, size=0.5)
下曲线
geom_smooth(formula=y-1~x, method='loess', color='gray20', se=FALSE, size=0.5)
我想用黑色曲线过滤蓝色数据点,这样只有蓝色数据点应该在这两条黑线之间,并且必须删除异常值。
我尝试使用which
, filter
,Subset
函数。但是,它不起作用,它没有呈现我想要的输出。
最后,我想要位于这两条黑线之间的散点数据。
解决方案
我发布了一个解决方案,因为这个问题对其他人有帮助。这里的一般想法是点的条件着色。基本上,如果它们落在曲线之间,我们给它们一个颜色,否则颜色将是NA
。
在这里,我假设我们有可以在ifelse
. 如果不是这样,那么我们需要找到最合适的。您可以在此线程中找到有关将曲线拟合到特定数据的有用答案。
x <- (1:10)
y <- x^4
set.seed(123)
xp <- rnorm(100, mean=5.5, sd = 4)
yp <- rnorm(100, mean=5e3, sd=5e3)
plot(x,y, type = "l")
lines(x, y+mean(y), col = "green")
lines(x, y+2*mean(y))
points(x=xp, y=yp, type = "p", col=ifelse(yp < xp^4 + 2*mean(y) & yp > xp^4, "blue", NA))
推荐阅读
- deep-learning - 条件甘训练题
- python-3.x - 将熊猫数据框中的 ID 列拆分为多列
- xslt - 根据多次出现的节点创建记录副本
- java - UML 类图(关联 vs 聚合 vs 组合)
- javascript - 如何在 html、jquery ajax 中使用 python 脚本并下载新文件
- c# - Sql 查询:内部连接,在(日期时间)和 id=value 之间
- bash - HashMap 之类的数据结构,便于在 Bash 中查询
- qt - 访问 QML GridView 的实现文件
- python - Celery long running task state goes back to pending despite task_track_started=True
- flutter - 如何在 Flutter 中实现这种布局?我尝试使用堆栈和溢出框,但它仍然看起来不一样