如何在Pandas plot()中正确指定y_label且避免bar()参数报错
你写法出错的核心原因是pandas的plot接口两种调用逻辑的差异:
- 当你给
plot()传入任意绘图参数(比如ylabel)时,plot会直接执行绘图逻辑,返回的是Matplotlib的Axes对象,此时你链式调用的.bar()是Matplotlib原生的坐标轴绘图方法,必须传入x、height等必填参数,自然会报错。 - 当你不带参数调用
plot()时,返回的是pandas的PlotAccessor绘图访问器对象,此时调用的.bar()是pandas封装好的柱状图方法,会自动拿当前Series的数据作为输入,所以能正常运行,但你没法在无参的plot()里指定ylabel。
解决方案1:直接在plot方法中指定图表类型和标签
把图表类型通过kind参数传给plot,不需要额外链式调用bar(),一步完成配置:
row.value_counts().reindex().plot(kind='bar', ylabel='something')
解决方案2:先绘图再设置坐标轴标签
用pandas的链式调用画完柱状图后,拿到返回的Axes对象单独设置y轴标签:
ax = row.value_counts().reindex().plot.bar() ax.set_ylabel('something')
两种写法都可以正常设置y轴标签,不会出现参数缺失的报错。
内容的提问来源于stack exchange,提问作者mahmood
相关产品推荐
相关产品推荐

