You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言的LDA图上添加locationData对应的凸包图层

解决方案

要在LDA图上叠加locationData对应的凸包图层,只需把位置信息纳入数据框,并新增一个针对location的stat_chull图层即可,以下是修改后的完整代码:

library(MASS)
library(data.table)
library(ggplot2)

myDF <- iris
locationData <- "UK"
myDF <- cbind(myDF, locationData)
myDF[30:45,6] <- "France"
myDF[105:145,6] <- "Japan"
myDF[146:150,6] <- "France"
Species <- myDF$Species

data4LDA <- lda(Species~. ,myDF[1:4] ) # 执行LDA
LD1 <- predict(data4LDA)$x[,1]
LD2 <- predict(data4LDA)$x[,2]

# 关键:把location字段加入数据框
dt <- data.table(Species, LD1, LD2, location = myDF$locationData)
dt[order(dt$Species),]

LDAplot <- ggplot(dt,aes(x=LD1,y=LD2)) +  
  # 先画location的凸包(底层,调低透明度避免遮挡数据点)
  stat_chull(aes(fill = location, color = location), geom = "polygon", alpha = 0.08) +
  # 绘制数据点
  geom_point(size = 2, aes(color=Species)) +
  # 再画Species的凸包
  stat_chull(aes(color = Species, fill = Species), geom = "polygon", alpha = 0.1) 
LDAplot

关键修改说明:

  • 补充位置数据:创建dt时新增location = myDF$locationData,让ggplot能读取位置分组信息。
  • 调整图层顺序:先绘制location的凸包(设置更低的alpha值),再画数据点和Species的凸包,避免凸包遮挡核心数据点。
  • 区分美学映射:通过aes分别为location和Species绑定颜色/填充映射,清晰区分两类凸包的分组逻辑。

如果想让location凸包更突出,可以调高alpha值(比如0.15),或者把location凸包放在数据点之后(但会遮挡部分点,按需选择即可)。

内容的提问来源于stack exchange,提问作者AsiJapan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 02:32:17