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

R语言导入Excel数据绘制颗粒形状三角图的方法与问题解决

R语言绘制Graham & Midgley沉积颗粒形状三角图实现方案

基础需求

  • 数据源:多份存储沉积颗粒测量数据的Excel表格,包含字段为a轴长度、b轴长度、c轴长度、岩性(lithology)、磨圆度(roundness)
  • 目标图件规则(与原Excel生成的Graham & Midgley颗粒形状三角图一致):
    • 左侧刻度对应c:a轴长比值
    • 右侧刻度对应b:a轴长比值
    • 底边刻度对应(a-b)/(a-c)比值
  • 可视化要求:按岩性对数据点做颜色编码、按颗粒平均尺寸映射点大小、支持灵活调整图件格式

实现过程踩坑记录

  1. 导入数据类型异常:使用readxl包读取Excel数据时,a.axis、b.axis、c.axis三个轴长字段会被识别为字符型,无法直接开展数值计算,需要提前做类型转换。
  2. 缺失值触发警告:数据中存在的NA缺失值会被ggplot2的geom_point散点图层自动剔除,默认触发Removed rows containing missing values警告,绘图前可提前过滤空值避免冗余提示。
  3. 三元图包适配错误:初期尝试调用ggtern包按常规三元闭合逻辑绘图,发现该类颗粒形状图仅外观与三元图相似,不属于标准三元图:无需满足三组分和为1的闭合要求,直接通过固定公式将轴长数据转换为平面直角XY坐标后绘图即可还原样式。

坐标转换规则:

  1. 先计算两个基础比值:c_a = c轴长度 / a轴长度、b_a = b轴长度 / a轴长度
  2. X坐标计算公式:1 - b_a + 0.5 * c_a
  3. Y坐标计算公式:c_a * 0.866 * 打印校正系数
    绘图逻辑:过滤空值后在XY散点图层上叠加三角形边框、对应轴刻度标注即可,无需依赖三元图专用包。

最终可用流程

基于readxl、dplyr、ggplot2三个包搭建的处理流可实现全流程自动化:

  • 支持交互式点选目标Excel文件
  • 自动统一不同来源表格的列名规范
  • 自动将三轴长度字段转换为数值型
  • 按给定公式批量计算图件映射坐标
  • 绘制散点图层:颜色映射岩性字段、点大小映射a轴尺寸(表征颗粒平均大小)
  • 自动叠加三角形边框、对应轴标签与刻度
  • 自动读取导入的文件名称作为图题
  • 自动将成图导出为JPG格式存储

待优化细节:增加文件名后缀自动去除逻辑、自定义岩性配色映射表,即可完全满足日常使用需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:39:20