Объединение разных imshow и баров в сюжете - PullRequest
0 голосов
/ 02 июня 2019

Я написал функцию для построения некоторых предсказаний классов для изображений. Я не могу понять, как правильно все визуализировать. У меня есть две конкретные проблемы: 1) я не могу получить правильное соотношение сторон для барплота (нижний ряд), и 2) я не могу заставить галочки для нижнего ряда вращаться для все графики вместо только последнего (но, похоже, то же самое относится и к вопросу о соотношении сторон). Первый ряд - сами изображения - похоже, хорошо прорисованы.

def plot_classifier_predictions(classifier: Sequential, model_name: str, compression_factor: float, x: np.ndarray, y_true: np.ndarray,
                             examples=5, random=True, save=True, plot=True):


    # Make predictions
    y_pred = classifier.predict(x=x)

    # Set indices
    indices = rnd.sample(range(len(x)), examples) if random else [i for i in range(examples)]

    # Get image dimension
    image_dim = x.shape[1]

    # Plot parameters
    plot_count = examples * 2
    row_count = 2
    col_count = int(ceil(plot_count / row_count))

    # Initialize axes
    fig, subplot_axes = plt.subplots(row_count,
                                     col_count,
                                     squeeze=True,
                                     figsize=(16, 10),
                                     constrained_layout=True)

    # Set colors
    colors = sns.color_palette('pastel', n_colors=len(dat.CLASSES))

    # Fill axes
    for i in range(plot_count):

        row = i // col_count
        col = i % col_count

        original_image = x[indices[col]]

        ax = subplot_axes[row][col]

        # First row: show original images
        if row == 0:
            ax.set_title("Image")
            ax.imshow(original_image)
            ax.axis('off')

        # Second row: show predictions
        else:
            ax.set_title("Predictions")

            ax.bar(x=range(len(dat.CLASSES)), height=y_pred[indices[col]], color=colors)
            ax.set_xticks(ticks=range(len(dat.CLASSES)))
            ax.set_xticklabels(dat.CLASSES)
            ax.set_aspect(2)
            plt.xticks(rotation=45)
            plt.ylim(0,1.0)



    # General make-up
    plt.tight_layout()

    # Title
    plt.suptitle(
        "Predictions (image dim {} - compression {})".format(image_dim, compression_factor),
        fontweight='bold')

Это текущий результат:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...