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

使用Pandas和Matplotlib绘制.txt数据时出现异常问题

问题分析与解决方案

问题根源

你的数据读取逻辑出错了:

  • 文本文件里第二行是单位(nm、GPa),被pd.read_csv当成了第一行数据,导致Depth和Hardness列混进了字符串值(比如nm、GPa),列类型变成object而非数值类型。
  • Matplotlib无法正确处理包含字符串的序列,直接绘图就会出现你看到的黑块和异常图表。

修复步骤

1. 正确读取数据

修改pd.read_csv的参数,跳过单位行,确保只读取数值数据:

import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline

# 第一行作为列名,跳过第二行(单位行,索引为1)
data = pd.read_csv('data/srj.txt', delimiter='\t', skiprows=[1])
# 强制转换列为数值类型,彻底避免类型问题
data = data.convert_dtypes()

print(data.head())
print(data.columns)

执行后会看到Depth和Hardness列都是纯数值类型,没有字符串混杂。

2. 重新绘制图表

此时再运行绘图代码,就能得到正常的曲线:

x = data['Depth']
y = data['Hardness']

plt.plot(x,y, 'r-', label='Depth-Hardness')
plt.xlabel('Depth [nm]')
plt.ylabel('Hardness [GPa]')
plt.title('Depth-Hardness-Curve')
plt.legend()  # 加上这行才能显示图例标签
plt.show()

补充说明

如果之前手动删除单位行后没效果,大概率是删除后没有重新读取数据,或者读取时仍有格式问题。用skiprows参数无需修改原始文件,是最稳妥的处理方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:07:29