Как заполнить патч Matplotlib Rectangle с изображением .png - PullRequest
0 голосов
/ 18 июня 2020

Я хочу добавить элемент patches.Rectangle() с заливкой изображения .png. Любая помощь будет принята с благодарностью.

Текущая попытка просто наложить изображение на прямоугольник того же размера:

import numpy as np
import matplotlib.hatch
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon, Rectangle
import matplotlib.patches as patches
from PIL import Image
from resizeimage import resizeimage

img =Image.open('gravel_or_conglomerate_1.png')
l=400
w=300
img = resizeimage.resize_contain(img, [w, l])
im = np.array(img, dtype=np.uint8)
fig,ax = plt.subplots(1)
ax.add_patch(Rectangle((0,50), l, w,facecolor='blue', edgecolor='k',   linewidth=0,alpha=1))
ax.imshow(im)
ax.axis('off')

1 Ответ

0 голосов
/ 19 июня 2020

Короткий, слегка измененный пример:

import numpy as np
import matplotlib.hatch
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon, Rectangle
import matplotlib.patches as patches
from PIL import Image

l=400
w=300
img =Image.open('GUDBOI.png').resize((l, w))
im = np.asarray(img)
fig,ax = plt.subplots()
rect = Rectangle((0, 0), l, w,facecolor='blue', edgecolor='k',
                       linewidth=3,alpha=1, transform = ax.transData)
im = ax.imshow(im)
im.set_clip_path(rect)
ax.axis('off')
plt.show()

Основная проблема в том, что вы не обрезали изображение на патче. Также вы добавили патч на оси. Example with an image I had

Подробнее о https://matplotlib.org/3.1.1/gallery/images_contours_and_fields/image_clip_path.html

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