使用列表推导式绘制多列折线图时遇ValueError报错求助
解决seaborn lineplot绘制多列折线图的ValueError问题
报错原因
你传入的x=['pt']是列表格式,而当data参数指定为DataFrame时,x需要直接传入列名字符串(而非列表)。列表形式会被seaborn当作独立的数值序列,其长度(1)和DataFrame的行数(13)不匹配,因此触发了长度错误。
修正方案
方案1:直接修正参数格式
把x的列表改成字符串,保留y的列名列表即可:
ax = sns.lineplot(data=mt, x='pt', # 改为列名字符串 y=[c for c in mt.columns if c not in ['pt']], dashes=False)
方案2:转为长格式数据(推荐)
seaborn更适配长格式(long-form)数据,先将宽表转换为长表再绘图,后续调整分组、样式会更灵活:
# 宽表转长表,pt作为分组依据,其他列转为分类和数值 mt_long = mt.melt(id_vars='pt', var_name='指标', value_name='数值') # 绘制折线图,用hue区分不同指标 ax = sns.lineplot(data=mt_long, x='pt', y='数值', hue='指标', dashes=False)
内容的提问来源于stack exchange,提问作者Bernard Ngoruse
相关产品推荐
相关产品推荐

