Установить местоположение изображения в matplotlib - PullRequest
1 голос
/ 12 апреля 2020

У меня есть список имен файлов трех изображений, я хочу построить их с помощью matplotlib, попытка, которую я сделал, приведена ниже. Я попытался нанести их все, но они все расположены в одном и том же месте, поэтому окончательное изображение появляется сверху.

Я хочу построить первое в координатах местоположения (0,0), второе в (100,200) и третье в (200,200). Я прочитал документацию на matplotlib.imshow, но не могу найти, как установить местоположение изображения, используя координаты.

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

imageList = ["foo.jpg", "bar.jpg", "foobar.jpg"]
coordinatesList = [[0,0],[100,200],[200,200]]

for i in range(3):
    imageFile = imageList[i]
    coordinate = coordinatesList[i]
    img=mpimg.imread(imageFile)
    imgplot = plt.imshow(img)

1 Ответ

1 голос
/ 12 апреля 2020

Я вижу 2 способа сделать это:

  1. с matplotlib.transforms:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import matplotlib as mpl


imageList = ["image.jpg", "image.jpg", "image.jpg"]
coordinatesList = [[0, 0], [100, 200], [200, 200]]

ax = plt.gca()
ax.set_xlim(0, 300)
ax.set_ylim(0, 300)

for i in range(3):
    imageFile = imageList[i]
    img=mpimg.imread(imageFile)
    imgplot = ax.imshow(img)
    tx, ty = coordinatesList[i]
    transform = mpl.transforms.Affine2D().translate(tx, ty)
    imgplot.set_transform(transform + ax.transData)

plt.show()
с параметром extent (но я знаю размеры моего изображения):
import matplotlib.pyplot as plt
import matplotlib.image as mpimg


imageList = ["image.jpg", "image.jpg", "image.jpg"]
coordinatesList = [[0, 0], [100, 200], [200, 200]]

ax = plt.gca()
ax.set_xlim(0, 300)
ax.set_ylim(0, 300)

imgplot = [None] * len(imageList)
for i in range(3):
    imageFile = imageList[i]
    img=mpimg.imread(imageFile)
    tx, ty = coordinatesList[i]
    ax.imshow(img, extent=(tx, tx + 50, ty, ty + 50))

plt.show()

Вот результат использования квадрата 50px в качестве изображения image.png: enter image description here

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