实战用Pyrolite分析你的土壤数据5分钟生成带分类的质地三角散点图当你拿到一份土壤成分检测报告面对密密麻麻的沙粒、粉粒和黏土百分比数据时是否想过这些数字背后隐藏着怎样的土壤特性传统的人工比对土壤质地分类表不仅耗时费力还容易出错。现在借助Python生态中的pyrolite工具库我们能够实现从原始数据到可视化分析的全流程自动化——更重要的是它能直接告诉你每个样本点属于哪种USDA标准土壤类型。1. 环境准备与数据清洗在开始绘制三角图之前需要确保你的Python环境已安装必要的库。推荐使用conda创建独立环境以避免依赖冲突conda create -n soil_analysis python3.9 conda activate soil_analysis pip install pyrolite pandas matplotlib numpy典型的实验室土壤检测数据可能包含多余列或非标准化命名。假设我们有一个soil_samples.csv文件其内容结构如下SampleIDClay_PCTSand_PCTSilt_PCTpHOrganic_MatterS132.141.526.46.22.8S218.765.216.15.81.5使用pandas进行数据预处理时需要特别注意三点确保三组分百分比之和为100±0.5%允许微小浮点误差将列名统一为Clay,Sand,Silt的规范格式过滤掉含有缺失值的记录import pandas as pd df pd.read_csv(soil_samples.csv) # 列名标准化 df df.rename(columns{Clay_PCT:Clay, Sand_PCT:Sand, Silt_PCT:Silt}) # 验证数据完整性 assert all(df[[Clay,Sand,Silt]].sum(axis1).between(99.5,100.5))2. 构建基础三角坐标系pyrolite的USDASoilTexture类封装了美国农业部标准的土壤分类系统。初始化分类器时会自动加载12种标准质地类型的多边形边界from pyrolite.util.classification import USDASoilTexture import matplotlib.pyplot as plt clf USDASoilTexture() fig, ax plt.subplots(figsize(10, 8)) ax clf.add_to_axes(axax, add_labelsTrue)关键参数说明figsize: 控制图形长宽比建议保持1:1比例add_labels: 显示各区域的类型标签edgecolor: 修改分类区域边界线颜色zorder: 控制图层叠加顺序此时运行代码会显示一个空白的三角坐标系三个顶点分别代表底部右侧100% Sand砂粒顶部顶点100% Clay黏土底部左侧100% Silt粉粒3. 数据投影与自动分类将清洗后的数据投影到三角图上时pyrolite提供了两种可视化方式3.1 散点图展示样本分布使用DataFrame特有的pyroplot接口可以直接绘制三元散点图df.pyroplot.scatter( axax, c#FF6B6B, # 点颜色 s50, # 点大小 edgecolorwhite, labelField Samples )3.2 实时分类标注更强大的功能在于自动判断每个点的土壤类型。分类器的predict()方法会返回每个样本对应的USDA类型classes clf.predict(df[[Clay, Sand, Silt]].values) df[SoilType] classes # 在图上添加类型标注 for i, row in df.iterrows(): ax.text(row[Sand], row[Clay], row[SoilType], hacenter, vacenter, fontsize8)常见输出类型包括Sandy Loam砂质壤土Clay Loam黏壤土Silty Clay粉质黏土Loam壤土4. 高级定制与输出优化基础图形往往需要进一步美化才能用于专业报告。以下是三个提升可视化效果的技巧4.1 区域颜色自定义from pyrolite.util.plot.style import color_ternary_polygons_by_centroid color_ternary_polygons_by_centroid( ax, colors(#F8F3D4, #F7DBF0, #CDF0EA), # 自定义色系 alpha0.6 # 透明度 )4.2 添加辅助网格线ax.grid(whichboth, linestyle:, alpha0.5) ax.tick_params(axisboth, whichmajor, labelsize9)4.3 导出出版级图片fig.savefig(soil_texture_analysis.png, dpi300, bbox_inchestight, transparentTrue)5. 实际应用案例解析某农场在20个不同位置采集土壤样本检测数据如下表所示样本点Clay (%)Sand (%)Silt (%)实际用途A122.362.115.6玉米田B335.832.431.8蔬菜大棚C218.270.511.3果树种植区分析发现玉米田土壤属于Sandy Clay Loam砂质黏壤土保水性较差大棚土壤是典型的Clay Loam黏壤土适合根系发达的蔬菜果树区为Loamy Sand壤砂土需要增加有机质改良基于此分析农艺师制定了差异化的施肥方案玉米田增加保水剂和缓释肥蔬菜大棚补充钙镁等中量元素果树区施用腐熟有机肥改善结构
实战:用Pyrolite分析你的土壤数据,5分钟生成带分类的质地三角散点图
发布时间:2026/6/1 9:53:06
实战用Pyrolite分析你的土壤数据5分钟生成带分类的质地三角散点图当你拿到一份土壤成分检测报告面对密密麻麻的沙粒、粉粒和黏土百分比数据时是否想过这些数字背后隐藏着怎样的土壤特性传统的人工比对土壤质地分类表不仅耗时费力还容易出错。现在借助Python生态中的pyrolite工具库我们能够实现从原始数据到可视化分析的全流程自动化——更重要的是它能直接告诉你每个样本点属于哪种USDA标准土壤类型。1. 环境准备与数据清洗在开始绘制三角图之前需要确保你的Python环境已安装必要的库。推荐使用conda创建独立环境以避免依赖冲突conda create -n soil_analysis python3.9 conda activate soil_analysis pip install pyrolite pandas matplotlib numpy典型的实验室土壤检测数据可能包含多余列或非标准化命名。假设我们有一个soil_samples.csv文件其内容结构如下SampleIDClay_PCTSand_PCTSilt_PCTpHOrganic_MatterS132.141.526.46.22.8S218.765.216.15.81.5使用pandas进行数据预处理时需要特别注意三点确保三组分百分比之和为100±0.5%允许微小浮点误差将列名统一为Clay,Sand,Silt的规范格式过滤掉含有缺失值的记录import pandas as pd df pd.read_csv(soil_samples.csv) # 列名标准化 df df.rename(columns{Clay_PCT:Clay, Sand_PCT:Sand, Silt_PCT:Silt}) # 验证数据完整性 assert all(df[[Clay,Sand,Silt]].sum(axis1).between(99.5,100.5))2. 构建基础三角坐标系pyrolite的USDASoilTexture类封装了美国农业部标准的土壤分类系统。初始化分类器时会自动加载12种标准质地类型的多边形边界from pyrolite.util.classification import USDASoilTexture import matplotlib.pyplot as plt clf USDASoilTexture() fig, ax plt.subplots(figsize(10, 8)) ax clf.add_to_axes(axax, add_labelsTrue)关键参数说明figsize: 控制图形长宽比建议保持1:1比例add_labels: 显示各区域的类型标签edgecolor: 修改分类区域边界线颜色zorder: 控制图层叠加顺序此时运行代码会显示一个空白的三角坐标系三个顶点分别代表底部右侧100% Sand砂粒顶部顶点100% Clay黏土底部左侧100% Silt粉粒3. 数据投影与自动分类将清洗后的数据投影到三角图上时pyrolite提供了两种可视化方式3.1 散点图展示样本分布使用DataFrame特有的pyroplot接口可以直接绘制三元散点图df.pyroplot.scatter( axax, c#FF6B6B, # 点颜色 s50, # 点大小 edgecolorwhite, labelField Samples )3.2 实时分类标注更强大的功能在于自动判断每个点的土壤类型。分类器的predict()方法会返回每个样本对应的USDA类型classes clf.predict(df[[Clay, Sand, Silt]].values) df[SoilType] classes # 在图上添加类型标注 for i, row in df.iterrows(): ax.text(row[Sand], row[Clay], row[SoilType], hacenter, vacenter, fontsize8)常见输出类型包括Sandy Loam砂质壤土Clay Loam黏壤土Silty Clay粉质黏土Loam壤土4. 高级定制与输出优化基础图形往往需要进一步美化才能用于专业报告。以下是三个提升可视化效果的技巧4.1 区域颜色自定义from pyrolite.util.plot.style import color_ternary_polygons_by_centroid color_ternary_polygons_by_centroid( ax, colors(#F8F3D4, #F7DBF0, #CDF0EA), # 自定义色系 alpha0.6 # 透明度 )4.2 添加辅助网格线ax.grid(whichboth, linestyle:, alpha0.5) ax.tick_params(axisboth, whichmajor, labelsize9)4.3 导出出版级图片fig.savefig(soil_texture_analysis.png, dpi300, bbox_inchestight, transparentTrue)5. 实际应用案例解析某农场在20个不同位置采集土壤样本检测数据如下表所示样本点Clay (%)Sand (%)Silt (%)实际用途A122.362.115.6玉米田B335.832.431.8蔬菜大棚C218.270.511.3果树种植区分析发现玉米田土壤属于Sandy Clay Loam砂质黏壤土保水性较差大棚土壤是典型的Clay Loam黏壤土适合根系发达的蔬菜果树区为Loamy Sand壤砂土需要增加有机质改良基于此分析农艺师制定了差异化的施肥方案玉米田增加保水剂和缓释肥蔬菜大棚补充钙镁等中量元素果树区施用腐熟有机肥改善结构