修复Matplotlib条形图:轴反转与元素过密问题
解决方案
首先修正核心问题:你没有统计每个科目的出现次数,直接将原始的FAMÍLIA列数据传入条形图,这是导致轴混乱的根本原因。以下是修正后的完整代码:
import pandas as pd import matplotlib.pyplot as plt # 导入数据集 ornitologia = pd.read_excel('C:/Users/mjoao/OneDrive/Documentos/Coleção_MNRJ/Ornitologia/ornitologia.xlsx') # 统计每个科目的出现次数 familias_contagem = ornitologia['FAMÍLIA'].value_counts() # 调整画布尺寸,给X轴标签足够空间 fig, eixo = plt.subplots(figsize=(12, 6)) # 绘制条形图:X轴为科名,Y轴为出现次数 eixo.bar(familias_contagem.index, familias_contagem.values, width=0.7) # 设置标题和轴标签 eixo.set_title('Lotes por famílias', fontsize=15, pad=10) eixo.set_xlabel('Famílias', fontsize=15) eixo.set_ylabel('Lotes', fontsize=15) # 旋转X轴标签并调整对齐,避免文字重叠 plt.xticks(rotation=45, ha='right') # 自动调整布局,防止标签被截断 plt.tight_layout() plt.show()
关键修改说明:
- 统计次数:使用
value_counts()方法获取每个科目的出现次数,这是正确生成Y轴数据的核心步骤。 - 画布尺寸:将
figsize调整为(12,6),给X轴的科名标签留出足够显示空间。 - X轴标签处理:通过
rotation=45旋转标签,ha='right'让标签右对齐,解决文字拥挤重叠的问题。 - 布局优化:
tight_layout()自动调整图表元素位置,避免轴标签或标题被画布边缘截断。 - 条形宽度:设置
width=0.7,让条形之间保持合理间距,提升可读性。
内容的提问来源于stack exchange,提问作者Nudibranquio
相关产品推荐
相关产品推荐

