如何设置matplotlib水平条形图的条形间距及标签对齐适配
优化后实现代码
import matplotlib.pyplot as plt from collections import Counter # 此处countersum为你已生成的Counter对象 # 直接取前100高频项,无需后续切片 toplist = countersum.most_common(100) # 直接解包得到键、值列表,替代原冗余循环 topkeylist, topvallist = zip(*toplist) keylist = [str(key) for key in topkeylist] # 核心调整:height参数越接近1,条形间距越小,设为0.95可实现相邻条形紧挨 plt.barh(keylist, topvallist, height=0.95, align='center') # 调整y轴配置:保证标签与条形中心对齐,fontsize根据展示条数适配,100条建议设为7~8 plt.yticks(range(len(keylist)), keylist, va='center', fontsize=7) plt.xlabel('数据集内出现频次') plt.ylabel('N-gram样本') # 自动调整画布边距,避免长标签被截断 plt.tight_layout() plt.show()
关键修改说明
- 条形间距调整:通过
plt.barh的height参数控制,该参数对应单根水平条形的高度,数值越接近1,条形越粗、相邻条形的间隙越小,设置为0.95即可实现几乎无空隙的紧挨效果 - y轴文本对齐:新增
plt.yticks的va='center'参数,保证每个y轴标签和对应条形的中心位置完全对齐 - 字体大小适配:可根据实际展示的条形数量灵活调整
fontsize参数,如展示100条的场景设置为7~8即可保证文本不重叠,可读性最优 - 代码冗余优化:使用解包和列表推导式替代原多轮循环,逻辑更简洁,执行效率更高
内容的提问来源于stack exchange,提问作者Athmos
相关产品推荐
相关产品推荐

