我正在制作sklearn分类报告,我生成的情节非常狭窄,难以阅读标签。我使用帖子here来获取绘图代码。
有关如何水平拉伸此图的任何建议吗?谢谢
def plot_classification_report(cr, title='Classification report ', with_avg_total=False, cmap=plt.cm.Blues):
lines = cr.split('\n')
classes = []
plotMat = []
for line in lines[2 : (len(lines) - 3)]:
#print(line)
t = line.split()
# print(t)
classes.append(t[0])
v = [float(x) for x in t[1: len(t) - 1]]
#print(v)
plotMat.append(v)
if with_avg_total:
aveTotal = lines[len(lines) - 1].split()
classes.append('avg/total')
vAveTotal = [float(x) for x in t[1:len(aveTotal) - 1]]
plotMat.append(vAveTotal)
plt.imshow(plotMat, interpolation='nearest', cmap=cmap)
plt.title(title)
plt.colorbar()
x_tick_marks = np.arange(3)
y_tick_marks = np.arange(len(classes))
plt.xticks(x_tick_marks, ['precision', 'recall', 'f1-score'], rotation=45)
plt.yticks(y_tick_marks, classes)
#plt.tight_layout()
plt.ylabel('Classes')
plt.xlabel('Measures')
plot_classification_report(classification_report(y_test, y_pred))
答案 0 :(得分:0)
默认情况下,轴将具有图像的纵横比。您可以使用aspect
参数imshow
来更改它。
将其放到"auto"
,让图像延伸到轴的给定空间
或者,将其设置为任意数字,表示高度与宽度的比率; number == height/width
。
在这种情况下,请尝试
plt.imshow(plotMat, interpolation='nearest', cmap=cmap, aspect="auto")
或
plt.imshow(plotMat, interpolation='nearest', cmap=cmap, aspect=len(classes)/12.)
并根据您的需求进行调整。