如何将椭圆添加到按R中密度着色的散点图中



我有一个代码,可以生成按密度着色的散点图(灵感来自这篇文章的R散点图:符号颜色表示重叠点的数量(:

## Data in a data.frame
x1 <- rnorm(n=1000, sd=2)
x2 <- x1*1.2 + rnorm(n=1000, sd=2)
df <- data.frame(x1,x2)
## Use densCols() output to get density at each point
x <- densCols(x1,x2, colramp=colorRampPalette(c("black", "white")))
df$dens <- col2rgb(x)[1,] + 1L
## Map densities to colors
cols <-  colorRampPalette(c("#FF3100", "#FF9400", "#FCFF00", 
"#45FE4F", "#00FEFF", "#000099"))(6)
df$col <- ifelse(df$dens >= 250, cols[1], ifelse(df$dens >= 200, cols[2], ifelse(df$dens >= 150, cols[3], ifelse(df$dens >= 100, cols[4], ifelse(df$dens >= 50, cols[5], cols[6])))))
## Plot it, reordering rows so that densest points are plotted on top
plot(x2~x1, data=df[order(df$dens),], pch=20, col=col, cex=2)

我想添加一个椭圆,其中密度值等于一个固定值,例如200。与此图像完全相同,其中绘制了一个密度值等于0.7的椭圆。我没有在这张图片中生成绘图的代码,所以我真的不知道如何获得类似的东西

有人能帮忙吗?

ggplot2有一个学习曲线,但如果您愿意尝试,可以使用geom_density_2d。我认为这是你想要的,至少在大多数情况下是这样。

https://ggplot2.tidyverse.org/reference/geom_density_2d.html

最新更新