Skip to content

About

Geochem-plots is a repository designed for geochemists to quickly visualize and analyze geochemical data.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

19 Commits

Folders and files

Repository files navigation

geochem-plots — 地球化学投图脚本库

R ggplot2

用 R + ggplot2 做地球化学常用投图(二元散点图 / 箱线图 / 三元图)的一套模块化脚本。 投图时只要在 Excel 里复制数据 → 在 R 里跑脚本 → PDF 自动打开。 所有共用配置(symbol 映射 / 配色 / 画布尺寸 / panel 主题等)集中管理,不同脚本零重复。


⚠️ 数据隐私

本仓库 不包含原始科研数据。所有 .xlsx / .csv 都在本地,已被 .gitignore 排除。 脚本通过剪贴板读取数据,不依赖任何具体数据文件。


📂 目录结构

geochem-plots/
├── plotting/                          # 投图脚本(R)
│   ├── config_plot_shared.R           # 所有图共用的配置(画布/配色/主题/panel label)
│   ├── utils_plot_shared.R            # 所有图共用的工具函数(顶部有函数索引)
│   ├── 20260410__plot_binaryplot_modular.R   # 二元散点图
│   ├── 20260410__plot_boxplots_modular.R     # 箱线图 + 散点(交互式分组)
│   ├── 20260418__plot_ternaryplot.R          # 三元图(手绘三角框,不依赖 ggtern)
│   └── legacy/                        # 早期独立脚本归档(不再维护)
├── processing/                        # 数据清洗 / 计算的 Python 脚本
├── outputs/                           # 生成的 PDF(被 .gitignore 排除)
├── geochem-plots.Rproj                # RStudio 项目入口(自动设置工作目录)
└── README.md

文件名前缀 20260410__:日期前缀(YYYYMMDD),表示该脚本的创建/重写时间,方便我自己版本管理。


🛠️ 环境与依赖

R 环境

  • R ≥ 4.0
  • RStudio(推荐用 geochem-plots.Rproj 打开,工作目录会自动设置正确)

R 包

首次使用需要安装以下包:

install.packages(c(
  "ggplot2", "scales",
  "ggprism",   # 主/次刻度线 + Prism 风格 guide
  "ggh4x",     # force_panelsizes 锁定 panel 物理尺寸
  "ggrepel",   # 散点图样品标签自动避让
  "ggstar"     # 扩展形状(symbol 26-41 用的星形/六边形等)
))

可选:PDF 自动打开(强烈推荐)

脚本生成 PDF 后会自动用 SumatraPDF 打开, 不锁文件、热刷新——再次投同一张图,已开窗口会原地刷新而不是弹新窗口。

下载装到任一以下位置即可被自动找到:

  • %LOCALAPPDATA%\SumatraPDF\SumatraPDF.exe(默认 per-user 安装)
  • C:\Program Files\SumatraPDF\SumatraPDF.exe
  • C:\Program Files (x86)\SumatraPDF\SumatraPDF.exe

装到别处?在 config_plot_shared.R 里设:

sumatra_pdf_path <- "D:/Tools/SumatraPDF/SumatraPDF.exe"

不想要这个功能?把 auto_open_pdf <- TRUE 改成 FALSE。

Python(可选,仅用于 processing/ 数据清洗)

推荐 Spyder + 把项目文件夹关联为 .spyproject。


🚀 快速开始

1. Excel 数据格式

每张图的数据 = Excel 中的一个表格区域,必须包含以下列(列名严格大小写匹配):

列名 类型 说明
Colour 整数 1-69 颜色编号,按位置取自配色表(前 49 同 GCDkit,50-69 为 SCI 扩展色)
Symbol 整数 0-41 形状编号,0-25 为 ggplot2 默认形状,26-41 为 ggstar 星形
Size 数值 点的基础大小(可选,关闭 use_excel_size 时改用统一大小)
你要画的变量列 数值 比如 Ta1 / CaO / MnO —— 列名必须与脚本里的 x_var / y_vars 完全一致

外加你想用作分组/标签的任何字符列(箱线图分组、散点标签等)。

2. 二元散点图

打开 plotting/20260410__plot_binaryplot_modular.R,改顶部"Plot-specific config"区块:

x_var <- "Ta1"                       # X 轴变量
y_vars <- c("CaO", "FeO", "MnO")     # Y 轴变量列表,会一次性出 3 张图
y_unit <- "wt.%"                     # 显示在 Y 轴标签括号里
use_log_x <- FALSE                   # 是否用对数轴

复制 Excel 数据(含表头)→ 跑整个脚本 → PDF 出现在 outputs/,并自动打开。

3. 箱线图

打开 plotting/20260410__plot_boxplots_modular.R:

target_vars <- c("CaO","FeO","MnO","ThO2","UO2",...)   # 想画哪些变量
y_unit <- "wt.%"
interactive_group_var   <- TRUE      # 启动时弹菜单选"用哪一列分组"
interactive_group_order <- TRUE      # 启动时让你输入"组的显示顺序"

跑脚本时控制台会问你:

  • 用哪一列分组(菜单选择)
  • 组的顺序(可输入编号 2 3 1 或组名 Type-A Type-B Type-C)

4. 三元图

打开 plotting/20260418__plot_ternaryplot.R:

A <- "U.Pb"   # 顶点
B <- "Na"     # 左下
C <- "Ca"     # 右下

复制 Excel 数据 → 跑脚本 → PDF 出现。


🎨 共享配置都在哪里改?

打开 plotting/config_plot_shared.R,主要旋钮:

区块 控制什么
canvas_presets + active_canvas 画布/panel 物理尺寸预设(default / box / wide_box),切预设改一行
auto_open_pdf 是否生成 PDF 后自动用 SumatraPDF 打开
axis_* 主刻度长度、数字与轴的间距、标题间距
use_excel_size / size_range 点大小行为(用 Excel 列还是统一大小)
panel_label_* 左上角 A/B/C... 黑框 label 的字号/尺寸/颜色/视觉居中微调
default_shape_codes / custom_starshape_values symbol 编号 → 形状的映射表

工具函数都在 plotting/utils_plot_shared.R,文件顶部有完整函数索引。


📌 常见调整

想换全局画布尺寸:config_plot_shared.R 里 active_canvas <- "box"

panel label 字母看起来没居中:调 panel_label_optical_lift_mm

  • 大写 A/B/C → 0.09
  • 小写 a/b/c 或 (a)/(b) → 0.45

想关掉 PDF 自动打开:auto_open_pdf <- FALSE

Excel 里 Symbol 列填了未支持的编号:脚本会 warning + 列出哪些值无效 + 跳过这些点


🗒️ 设计要点

  • 每个 modular 脚本 = 该图独有的逻辑 + 顶部 20 行用户配置; 通用配置全部下沉到 config_plot_shared.R,工具函数下沉到 utils_plot_shared.R。
  • PDF 用 cairo_pdf 设备:中文字体、ggstar 形状、抗锯齿都比默认 pdf 设备好。
  • Panel 物理尺寸用 ggh4x::force_panelsizes 锁定:保证不同图的 panel 视觉尺寸完全一致, 方便论文里横向比较。
  • 三元图自己手绘三角框/网格/刻度:不依赖 ggtern,方便自定义刻度方向、顶点标签位置等。

📧 Author

Yaoqing Luo (罗耀清) — yaoqing.luo@cug.edu.cn 中国地质大学(武汉) / China University of Geosciences (Wuhan)

About

Geochem-plots is a repository designed for geochemists to quickly visualize and analyze geochemical data.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages