跳至内容
EIS
EIS/DRT 热力图

EIS/DRT 热力图

EIS/DRT 热力图

当你做了一组原位 EIS(不同电位/不同时间点)或一系列样品(不同条件、不同浓度)的 DRT 分析后,把所有样品的 γ(τ) 折线挤在一张图上往往很难读。这个 Workflow 把它们拼成一张 τ–样品 维度的热力图,用颜色直观展示某个弛豫过程在不同条件下的强度演化。

前置条件

可以二选一作为输入:

  1. EIS/DRT 分析 输出的 drt_output/ 目录(已计算好 DRT 的样品集合)
  2. EIS 提取: 辰华仪器EIS 提取: 东华原位 EIS 输出的 *_eis.csv 目录(程序会先自动跑一遍 DRT 再绘图)

至少需要 2 个样品。

操作步骤

只需选择一个目录。程序会自动:

  1. 检测目录类型(drt_output/ 还是 *_eis.csv
  2. 必要时调用 DRT 求解,并把每个样品的 drt_data.csv 缓存到 drt_heatmap/drt_output/<sample>/
  3. 对所有样品取 τ 范围交集,建立 200 点的对数公共网格,对 γ(τ) 在 log-τ 上做线性插值
  4. 对样品名做自然排序

Y 轴启发式说明:

  • 若所有样品名末尾都能抽出整数,且这些整数两两不同(如 in_situ_001in_situ_002…),则 Y 轴模式为 index,用这些整数作为 Y 数值,标签为 Sample Index
  • 否则回退为 ordinal 模式,Y 数值为 1..N,Y 刻度标签使用样品名(在 Origin 中尝试通过 LabTalk 注入;若失败则回退为数值刻度并打印提示)

终端会打印当前使用的模式,便于排查。

输出

  • drt_heatmap.png:matplotlib 版热力图,X 轴为 τ(log 坐标),Y 轴按启发式确定
  • drt_heatmap.opju:Origin 工程,这是后续可二次编辑的主要产物。X 轴存的是 log₁₀τ 数值(轴标签会写成 log₁₀τ ),这样便于在 Origin 里继续编辑而不会和"看似 log 实际线性分布"的格子错位
  • drt_heatmap_clipped.png / drt_heatmap_clipped.opju截峰版热力图。DRT 结果常存在一个远高于其他特征的主峰,会把色标拉得很大、淹没所有次要弛豫过程。这两个文件会把色标上限钳制在"次强峰高度的 120%"(用 scipy.signal.find_peaks 在每个样品的 γ(τ) 上寻峰,取所有样品里最高的次强峰,再乘 1.2),高于该阈值的格子统一用色标顶端的颜色显示。两份输出和原始 drt_heatmap.* 同时给出,可以互相对照。如果所有样品都只有 1 个峰,则会跳过截峰版本并打印提示
  • drt_heatmap_matrix.csv:插值后的 γ 矩阵(未截峰),第一列样品名,第二列 Y 数值,其余列以 τ 为表头
  • samples_meta.json:记录 y_modey_labelinput_kind 与样品-Y 数值映射

eis_csvs 输入模式还会在 drt_heatmap/drt_output/<sample>/drt_data.csv 落盘 DRT 中间结果,方便复用。

原理(简要)

将每个样品的 γ(τ) 排布到统一的对数 τ 网格上,得到矩阵 γi,j\gamma_{i,j},其中 ii 标记样品(Y 维度),jj 标记 τ(X 维度)。热力图把 γi,j\gamma_{i,j} 用颜色表示,可以一眼看出:

  • 某个弛豫过程对应的峰随条件(电位/时间)如何沿 τ 移动
  • 不同样品间峰强度的相对变化

常见问题

  • 为什么提示 “tau 范围无重叠”? 不同样品的频率范围如果完全错开,公共 τ 网格无法构建。请检查输入数据的 freq_hz 列。
  • 样品顺序怎么定? 自然排序:sample_001 < sample_002 < sample_010。如果你不希望按名称排序,请提前重命名。
  • Origin 自定义 Y 刻度失败怎么办? 程序会捕获异常并回退为数值刻度,opju 仍可正常打开,只是 Y 轴显示 1, 2, 3, ... 而非样品名。

实用建议

如果你做的是原位 EIS(按时间或电位采样),建议样品名带上严格递增的整数序号(如 _001_002),这样 Y 轴会自动用这些序号做坐标,便于和其他原位曲线对照。