Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
r在散点图中识别两个种群_R_Subset_Scatter Plot_Raster - Fatal编程技术网

r在散点图中识别两个种群

r在散点图中识别两个种群,r,subset,scatter-plot,raster,R,Subset,Scatter Plot,Raster,我将两个光栅与一个简单的逐细胞散点图进行比较,发现我有两个看似不同的总体: 现在,我正试图提取每个群体的位置(例如,通过隔离行ID),这样我就可以看到它们在光栅中的位置,并可能理解为什么会出现这种行为。下面是一个可复制的示例: X您的数据有一条线性分隔线。您可以通过以下方式找到它: plot(df$X,df$Y) Pts = locator(2) 您需要单击原点下方两个组之间的一个点,以及最右侧(组之间)的另一个点。根据你的数据,我得到了 Pts $x [1] 0.8066296 994

我将两个光栅与一个简单的逐细胞散点图进行比较,发现我有两个看似不同的总体:

现在,我正试图提取每个群体的位置(例如,通过隔离行ID),这样我就可以看到它们在光栅中的位置,并可能理解为什么会出现这种行为。下面是一个可复制的示例:

X您的数据有一条线性分隔线。您可以通过以下方式找到它:

plot(df$X,df$Y)
Pts = locator(2)
您需要单击原点下方两个组之间的一个点,以及最右侧(组之间)的另一个点。根据你的数据,我得到了

Pts
$x
[1]   0.8066296 994.9723687
$y
[1]   48.56932 1255.32870

## Slope
(Pts$y[2] - Pts$y[1]) / (Pts$x[2] - Pts$x[1])
[1] 1.213841

## Draw the line to confirm 
abline(48,1.2, col="red")

## use the line to distinguish the groups
Group = rep(1, nrow(df))
Group[df$X*1.2 + 48 < df$Y] = 2
plot(df, pch=20, col=Group)
Pts
$x
[1]   0.8066296 994.9723687
$y
[1]   48.56932 1255.32870
##斜坡
(分$y[2]-分$y[1])/(分$x[2]-分$x[1])
[1] 1.213841
##划线确认
abline(48,1.2,col=“红色”)
##使用该行来区分组
组=代表(1,nrow(df))
组[df$X*1.2+48

光谱聚类有助于识别边界清晰的点簇。一个很大的优点是它是无监督的,即不太依赖于人的判断,尽管该方法速度慢,需要提供一些超参数(例如聚类数)

下面是集群的代码。在您的情况下,代码大约需要几分钟

library(kernlab)
specc_df <- specc(as.matrix(df),centers = 2)
plot(df, col = specc_df)
库(kernlab)

我不明白你想干什么。期望的结果是什么?在你的原始图片中,看起来你有很多重叠。你将如何解决这个问题?你只是想用眼睛把他们分开吗?或者你有“孤立群”的数学定义吗?谢谢raymkchow,但我的原始数据有大约1000000行,所以这个解决方案在这种情况下似乎不可行哦,那么我们还需要一些更好的答案。你能把这个要求加到问题上吗?