如何提取路径最后部分作为柱状图X轴类名(FastAI卫星图像分类)
解决柱状图X轴显示全路径的问题
我来帮你搞定这个X轴标签的问题!你遇到的核心问题是在Windows系统下用split('/')分割路径根本行不通——因为Windows的路径分隔符是反斜杠\,用斜杠分割的话,整个路径字符串不会被拆分,最后得到的还是全路径。
更稳妥的方式是直接利用Path对象自带的name属性,它能跨平台自动提取文件夹/文件的名称,完全不用手动处理路径分隔符。
修改后的完整代码
import matplotlib.pyplot as plt from pathlib import Path # 存放10个类别文件夹的路径 PATH = Path('C:/Users/oaamer/Desktop/sample/EuroSATallBands/train/') # 构建类别-样本数字典(键为类别名称) classes_num = {} for category_folder in PATH.iterdir(): # 先判断是否为文件夹,避免PATH下有文件干扰 if category_folder.is_dir(): # 直接获取文件夹名称作为类别名 class_name = category_folder.name # 统计该类别下的图片数量 classes_num[class_name] = len(list(category_folder.iterdir())) print(classes_num) # 绘制柱状图 plt.bar(classes_num.keys(), classes_num.values(), color='green') # 旋转X轴标签45度,避免长名称重叠 plt.xticks(rotation=45) plt.tight_layout() plt.show()
关键改进点
- 用
Path.name替代字符串分割:不管是Windows的\还是Linux的/,Path对象都能正确识别并提取最后一级的文件夹名称,彻底解决路径分割的兼容性问题。 - 增加文件夹判断:加上
is_dir()检查,防止PATH目录下存在非文件夹文件时引发错误。 - 优化标签可读性:添加
plt.xticks(rotation=45)让X轴标签旋转,避免像HerbaceousVegetation这类长名称互相重叠。
这样修改后,你的柱状图X轴就会显示AnnualCrop、Forest这类清晰的类别名称,而不是冗长的全路径啦!
内容的提问来源于stack exchange,提问作者Waseem Ali
相关产品推荐
相关产品推荐

