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

循环绘制多文件TGA数据图表失败:仅显示空白图无报错

问题分析与修复方案

你的循环代码出现空白图表是由几个关键错误导致的,逐个修正即可解决:

1. 画布创建位置错误

你在循环绘图完成后调用plt.figure(),这会新建一个空白画布,最后plt.show()显示的是这个空白画布,而非你之前循环绘制内容的画布。必须在绘图前创建画布。

2. 绘图变量错误

循环里写的plt.plot(df['"Temp"'],df['Time'])存在两个问题:一是你实际要绘制的是质量损失百分比mass_percent,变量名写错成了df['Time'];二是原代码用的是散点图scatter,你这里改成了折线图plot,如果需要和原效果一致需改回。

3. 缺失必要库导入

代码用到了pd(pandas)和plt(matplotlib.pyplot),但循环代码里没有导入这两个库,必须补充导入。

4. 未定义rutas变量

代码直接使用rutas但没有定义,需要先获取目标目录下的所有TXT文件路径,否则循环不会执行,自然没有绘图内容。

5. 缺少图例区分

每个文件的曲线需要添加label参数,最后调用plt.legend()显示图例,方便区分不同文件的数据。


修正后的完整代码

import os
import pandas as pd
import matplotlib.pyplot as plt
from google.colab import files
import cv2

# 切换工作目录
os.chdir('/content/drive/MyDrive')
print(os.getcwd())

# 获取目录下所有TXT文件路径(可根据实际文件名规则调整)
rutas = [f for f in os.listdir() if f.endswith('.TXT')]

# 提前创建画布
plt.figure(figsize=(10,6))  # 可选:设置画布尺寸
plt.xlabel("Temperature (°C)")
plt.ylabel("Mass loss (%)")

for ruta in rutas:
    # 读取数据
    df = pd.read_csv(ruta, skiprows=22, names=['"Time"', '"Temp"','"TGA"'], sep="\t")
    # 统一转换数值类型
    df = df.apply(pd.to_numeric, errors='coerce', downcast='float')
    # 计算质量损失百分比
    df['mass_percent'] = df['"TGA"'] / 18.98 * 100
    # 绘制散点图,用文件名作为图例标签
    plt.scatter(df['"Temp"'], df['mass_percent'], label=ruta.split('.')[0])

# 显示图例
plt.legend()
# 展示图表
plt.show()

额外说明

  • 如果需要折线图,将plt.scatter替换为plt.plot即可。
  • 若不同文件的初始质量(18.98)不同,需调整该数值(比如从文件名或文件内容中读取对应值)。
  • 若rutas为空,检查工作目录下是否存在目标TXT文件,或调整文件名后缀的判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:07:35