箱线图绘制异常求助:仅显示F4组,Km与Liquid组缺失
Fix for BoxPlot Not Showing All Groups (Km and Liquid) in Matplotlib
我来帮你搞定这个箱线图的问题,你遇到的情况主要是刻度设置错误、切片索引遗漏,加上单数据点的箱线图默认显示不明显导致的,一步步给你修正:
问题拆解&解决要点
- 你的
plt.xticks用法有误:第一个参数需要指定箱体的位置(对应第1、2、3个箱体),传空列表会导致刻度不显示,甚至影响箱体渲染位置。 - 切片时跳过了索引470:
df2['Counts'][471:494]会漏掉第470行的数据,应该改成470:494。 - 单个数据点的Liquid组:matplotlib默认对单值数据的箱线图只显示极小的点,几乎看不到,需要调整参数增强显示效果。
修正后的完整代码
import matplotlib.pyplot as plt # 修正切片索引,同时转成列表避免Series对象的潜在问题 data = [ df2['Counts'][0:470].tolist(), df2['Counts'][470:494].tolist(), df2['Counts'][495:].tolist() ] fig1, ax4 = plt.subplots() ax4.set_title('Furter vs Krum serum') # 正确设置刻度:指定箱体位置+对应标签 plt.xticks([1, 2, 3], ['F4','Km','Liquid']) # 绘制箱线图,添加参数让单数据点更醒目 ax4.boxplot( data, showmeans=True, # 显示均值(单数据点就是它本身) meanprops={'marker':'o', 'markeredgecolor':'red', 'markersize':8} # 自定义均值点样式 ) plt.show()
额外验证步骤
如果Km组还是没显示,先打印各组数据长度确认数据存在:
print("F4组数据量:", len(data[0])) print("Km组数据量:", len(data[1])) print("Liquid组数据量:", len(data[2]))
确保Km组有24个数据点(494-470=24),Liquid组至少有1个数据点。
内容的提问来源于stack exchange,提问作者TheUndecided
相关产品推荐
相关产品推荐

