使用pandas df.plot()绘图时遭遇'Line2D' object has no property 'ylabel'错误的排查求助
解决
df.plot()报错AttributeError: 'Line2D' object has no property 'ylabel' 这个错误的核心原因是:你在df.plot()中使用的ylabel参数,在桌面设备的pandas版本里,要么不被直接支持,要么在subplots=True的模式下,该参数被错误传递给了matplotlib的Line2D对象——而Line2D并没有ylabel这个属性,所以触发了报错。你的Mac设备能正常运行,大概率是因为Mac上的pandas版本更高,已经支持该参数的正确传递。
下面提供几个可行的解决办法:
方法1:手动为子图设置Y轴标签
当开启subplots=True时,直接通过df.plot()的ylabel参数可能无法正确应用到所有子图。我们可以先完成绘图,再遍历所有子图设置标签:# 先完成绘图,获取子图对象 axes = df_mean.plot(kind='line', subplots=True, layout=(1,8), figsize=(40,8), sharey=True, title="Average movement") # 遍历每个子图设置Y轴标签 for ax in axes.flatten(): ax.set_ylabel("Percent Change")方法2:确认并升级pandas版本
df.plot()的ylabel参数是在pandas 1.1.0版本之后才正式引入支持的。即使你说已经更新了pandas,也可能版本仍未达标。先检查当前版本:import pandas as pd print(pd.__version__)如果版本低于1.1.0,执行升级命令:
pip install --upgrade pandas方法3:尝试使用参数别名
y_label
部分较旧的pandas测试版本中,可能用y_label作为Y轴标签的参数名,而非ylabel,你可以替换参数名尝试:df_mean.plot(kind='line', subplots=True, layout=(1,8), figsize=(40,8), sharey=True, y_label = "Percent Change", title="Average movement")
内容的提问来源于stack exchange,提问作者jd_h2003
相关产品推荐
相关产品推荐

