Matplotlib绘图遇TypeError:DataFrame列名绘图失败求助
解决Matplotlib结合DataFrame绘图时含特殊字符列名触发TypeError的问题
问题根源
你的列名Density_kg/m-3包含/和-这类特殊字符,Matplotlib在通过data参数解析列名时,会尝试将其当作表达式解析,而非直接作为列名字符串读取,最终错误地将列名包装成列表,触发TypeError。
解决方案
方案1:直接提取DataFrame列数据传入绘图函数
跳过Matplotlib的列名解析逻辑,直接从DataFrame中取出对应列的数值传入plt.plot:
import matplotlib.pyplot as plt plt.plot(mississauga['Density_kg/m-3'], mississauga['Height_m']) plt.xlabel('Air Density (kg m^-3)', fontsize = 16) plt.ylabel('Height (m)', fontsize = 16) plt.title('Air Density by Altitude', fontsize = 16) plt.show()
方案2:重命名DataFrame列(移除特殊字符)
修改列名去掉特殊符号,之后可以继续使用data参数的方式绘图:
import matplotlib.pyplot as plt # 重命名含特殊字符的列 mississauga_renamed = mississauga.rename(columns={'Density_kg/m-3': 'Density_kg_m3'}) plt.plot('Density_kg_m3', 'Height_m', data = mississauga_renamed) plt.xlabel('Air Density (kg m^-3)', fontsize = 16) plt.ylabel('Height (m)', fontsize = 16) plt.title('Air Density by Altitude', fontsize = 16) plt.show()
方案1适合临时绘图场景,无需修改原始数据;方案2适合需要多次使用该列的场景,后续绘图可以保持简洁的写法。
内容的提问来源于stack exchange,提问作者Jakob
相关产品推荐
相关产品推荐

