You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为字母识别创建正确直方图?matplotlib绘图异常求助

问题出在哪?

你用plt.hist()的思路错了——hist()是给原始数据做频数统计用的,比如直接扔一堆字母进去,它会自动数每个字母出现多少次并画图。但你已经用value_counts()算好了每个字母的数量,再把这个结果塞给hist(),它会把这些数量值当成新数据再统计一遍,自然x轴就变成数量了。

两种解决办法

你要的是展示“字母-数量”对应关系的条形图,不是直方图,用下面两种方法都能搞定:

方法一:Pandas一键绘图(最省事)

不用额外拼DataFrame,直接对统计结果调用绘图接口:

import pandas as pd
import matplotlib.pyplot as plt

letters = pd.read_csv('C:/Users/Lenovo/Desktop/Yapay Zeka/odev1/letter_recognition.data')
# 统计+绘图一步到位
letters['Letter'].value_counts().plot(kind='bar')
plt.ylabel('数量')
plt.xlabel('字母')
plt.show()

方法二:Matplotlib手动画条形图

如果想自己控制细节,用plt.bar()直接传字母和数量:

import pandas as pd
import matplotlib.pyplot as plt

letters = pd.read_csv('C:/Users/Lenovo/Desktop/Yapay Zeka/odev1/letter_recognition.data')
# 先拿到统计好的字母和数量
count_result = letters['Letter'].value_counts()
# 画条形图
plt.bar(count_result.index, count_result.values)
plt.ylabel('数量')
plt.xlabel('字母')
# 字母太多挤在一起的话,加个旋转标签的代码
plt.xticks(rotation=45)
plt.show()
额外提一句

如果你非要用直方图的形式(其实没必要,条形图更适合类别数据),直接扔原始的字母列进去就行,hist()会自动帮你统计:

plt.hist(letters['Letter'])
plt.ylabel('数量')
plt.xlabel('字母')
plt.show()

内容的提问来源于stack exchange,提问作者Duthé

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:05:14