Удалить кадры в pyplot - PullRequest
       7

Удалить кадры в pyplot

0 голосов
/ 03 мая 2018

Как убрать удаление границ в изображении pyplot? Я попробовал несколько подходов, но ни один из них, казалось, не работал хорошо для меня. Для меня также важно сохранить пользовательские оси, но я бы хотел переместить их в абсолютную верхнюю / правую / левую / нижнюю границу, чтобы границы были невидимыми.

Сгенерированное изображение

Как это должно выглядеть

def draw(screen, palette, figures, output):
    my_dpi = 100

    size = plt.rcParams["figure.figsize"]

    size[0] = screen.height / my_dpi
    size[1] = screen.width / my_dpi

    plt.rcParams['figure.facecolor'] = screen.bg_color.code

    fig, ax = plt.subplots()
    plt.axis([0, screen.height, 0, screen.width])
    plt.axis('off')

    for figure in figures:
        col = figure.color
        if not col:
            col = screen.fg_color

        # --- #

        elif isinstance(figure, Circle):
            shape = plt.Circle((figure.point.x, figure.point.y), figure.radius, color=col.code, clip_on=True)
            ax.add_patch(shape)

        # --- #

    fig.show()
    if output:
        fig.savefig(output, facecolor=fig.get_facecolor(), bbox_inches='tight', pad_inches=0)


import matplotlib.pyplot as plt

Пример выполнения:

import matplotlib.pyplot as plt

def draw():
    my_dpi = 100
    height = 600
    width = 800
    size = plt.rcParams["figure.figsize"]

    size[0] = height / my_dpi
    size[1] = width / my_dpi

    plt.rcParams['figure.facecolor'] = "#2c3e50"

    fig, ax = plt.subplots()
    plt.axis([0, height, 0, width])

    plt.axis('off')

    shape = plt.Circle((40, 40), 40, color="#e67e22", clip_on=True)
    ax.add_patch(shape)

    shape = plt.Circle((600, 800), 100, color="#e67e22", clip_on=True)
    ax.add_patch(shape)

    fig.show()
    fig.savefig("./shape.png", facecolor=fig.get_facecolor(), bbox_inches='tight', pad_inches=0)

1 Ответ

0 голосов
/ 03 мая 2018

Одним из решений является ручная установка пробела между осями и краем фигуры с помощью plt.subplots_adjust и установка всего в 0 или 1 (в зависимости от того, что это за аргумент). Вам также необходимо удалить аргументы, которые изменяют параметры фигуры в вашем вызове на fig.savefig, так как они переопределяют параметры plt.subplots_adjust, которые были установлены ранее.

Используя ваш пример:

def draw():
    my_dpi = 100
    height = 600
    width = 800
    size = plt.rcParams["figure.figsize"]

    size[0] = height / my_dpi
    size[1] = width / my_dpi

    plt.rcParams['figure.facecolor'] = "#2c3e50"

    fig, ax = plt.subplots()
    plt.axis([0, height, 0, width])

    plt.axis('off')

    shape = plt.Circle((40, 40), 40, color="#e67e22", clip_on=True)
    ax.add_patch(shape)

    shape = plt.Circle((600, 800), 100, color="#e67e22", clip_on=True)
    ax.add_patch(shape)

    plt.subplots_adjust(left=0, right=1, top=1, bottom=0)
    fig.savefig("./shape.png", facecolor=fig.get_facecolor())

    plt.show()

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