Matplotlib拓宽了情节

时间:2017-03-12 19:49:07

标签: python matplotlib scikit-learn

我正在制作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))

plot_output_too_narrow

1 个答案:

答案 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.)

并根据您的需求进行调整。