Python柱状图无法绘制,报错“no numeric data to plot”
问题解决:柱状图绘制报错“no numeric data to plot”
问题根源
你的代码中,将统计得到的数值型counts通过res = counts.astype(str)转为了字符串,后续通过字符串拼接、拆分生成的result2里,Count对应的都是字符串值。Pandas的plot.bar要求y轴数据必须是数值类型(int/float),因此触发了“no numeric data to plot”错误。
修复方案
方案1:简化代码,直接构建数值型Count列
替换原有DataFrame构建的冗余代码,直接用np.unique返回的unique和counts创建DataFrame,counts本身就是数值类型,无需额外转换:
unique, counts = np.unique(arr3, return_counts=True) # 直接构建DataFrame,Count列自动为数值类型 df = pd.DataFrame({'Status': unique, 'Count': counts}) print(df) # 绘制柱状图并显示 ax = df.plot.bar(x='Status', y='Count', rot=70) plt.show()
方案2:保留原有流程,转换Count列类型
如果要保留原来的字符串拼接拆分逻辑,只需在生成DataFrame后,将Count列转为整数类型:
df = pd.DataFrame(result2,columns=['Status','Count']) # 将Count列从字符串转为整数 df['Count'] = df['Count'].astype(int) print(df) ax = df.plot.bar(x='Status', y='Count', rot=70) plt.show()
额外提示
原代码最后没有调用plt.show(),即使修复类型问题,也可能看不到绘制的图表,记得加上这一行。
内容的提问来源于stack exchange,提问作者Ankur Deshpande
相关产品推荐
相关产品推荐

