如何在柱状图中展示大于200的数据?代码标签不显示求助
问题分析与修正:CSV数据提取+柱状图X轴标签异常
问题核心
需求为从CSV文件提取数值大于200的数据并绘制柱状图,但代码运行后X轴标签无法正常显示,代码存在多处逻辑和语法问题。
代码错误点
- 数据逻辑割裂:先用Pandas筛选出符合条件的
df3,但后续绘图完全未使用该结果,转而用Numpy读取全量数据,等于筛选逻辑无效。 - X轴标签配置错误:
plt.xticks(labels, ...)的第一个参数应为刻度位置,直接传入集合转成的labels会导致刻度与柱状图位置不匹配;同时fontsize=40字号过大,必然导致标签拥挤重叠。 - 冗余数据读取:同时用Pandas和Numpy读取同一份文件,既浪费资源又易引发数据不一致问题。
修正后的代码
直接用Pandas完成全流程,逻辑更简洁,同时解决X轴标签问题:
import pandas as pd import matplotlib.pyplot as plt # 读取CSV并筛选数值大于200的记录 df = pd.read_csv("monthly.csv") filtered_df = df[df['monthly'] > 200] # 数值列名与原代码保持一致 # 绘制柱状图 plt.figure(figsize=(10, 6)) # 设置画布大小,避免标签拥挤 plt.bar(x=filtered_df['month'], height=filtered_df['monthly'], width=0.5) # 配置图表属性 plt.xlabel('month', fontsize=14) plt.xticks(rotation=45, fontsize=12) # 调整旋转角度和字号,避免重叠 plt.ylabel('Amount', fontsize=14) plt.title('Monthly Amount > 200', fontsize=16) plt.grid(axis='y', linestyle='--', alpha=0.7) # 仅显示Y轴网格,提升可读性 plt.tight_layout() # 自动调整布局,防止标签被画布截断 plt.show()
修正说明
- 统一数据处理逻辑:全程用Pandas完成读取、筛选、绘图,确保展示的是符合要求的数据。
- 修复X轴标签显示:直接使用筛选后的月份作为刻度,调整旋转角度和字号,配合
plt.tight_layout()避免标签被截断。 - 优化图表可读性:添加Y轴标签、标题,调整网格显示方式,让图表信息更清晰。
内容的提问来源于stack exchange,提问作者unleasehed
相关产品推荐
相关产品推荐

