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

如何使用ggtern绘制带分区颜色和类别标注的土壤质地三元图

解决方案

完整可运行代码

# 加载依赖包,未安装的话先执行 install.packages(c("ggtern","dplyr"))
library(ggtern)
library(dplyr)

# 示例数据
area <- c('S1','S2','S3','S4','S5','S6','S7','S8')
sand <- c(76.4,56.9,61.7,64.5,71,70.1,60.5,53.7)
silt <- c(9.3,23.1,23,17.4,13.5,13.4,21.1,30.6)
clay <- c(14.3, 20,15.4,18,15.5,16.6,18.4,15.7)
my_data <- data.frame(area,sand,silt,clay)

# 绘图
theme_set(theme_bw())
my_data %>%
    ggtern(aes(
        x = sand,
        y = clay,
        z = silt,
        color = area # 映射采样分区到点颜色
    )) +
    # 绘制土壤质地分类边界,和plotrix的soil.texture默认USDA分类一致
    geom_soiltexture(
      classification = "USDA",
      show.legend = FALSE,
      alpha = 0, # 填充设为完全透明,仅保留边界线
      linetype = "solid",
      color = "gray50"
    ) +
    # 绘制土壤质地类别文本标注
    geom_soiltexture_text(
      classification = "USDA",
      size = 3.5,
      color = "gray20"
    ) +
    geom_point(size = 3.5) + # 调整点大小提升辨识度
    labs(color = "采样分区") # 自定义图例标题

对应需求的修改说明

  • 不同分区对应不同颜色:仅需在aes()映射规则中添加color = area,即可自动按采样分区给点分配不同颜色,你也可以通过scale_color_manual(values = c("S1" = "red", "S2" = "blue"...))自定义每个分区的展示颜色,或者调用scale_color_brewer(palette = "Set2")使用预设配色方案。
  • 三角形内部带土壤质地类别标注:ggtern内置了USDA土壤质地分类的边界与标注图层,直接调用geom_soiltexture绘制分类边界、geom_soiltexture_text绘制类别文本即可,分类规则与plotrix包的soil.texture函数默认规则完全一致,你可以调整边界线样式、文本大小、填充透明度等参数适配你的显示需求。

如果运行时提示geom_soiltexture函数不存在,先升级ggtern到最新版本即可:install.packages("ggtern")


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:36:05