Я создаю интерактивный дисплей TSNE, показывающий примеры изображений, которые объединяются. Моя текущая реализация делает это путем создания объектов OffsetImage, обернутых AnnotationBBox. Каждый OffsetImage содержит изображение с размером (75, 75) пикселей, которое отображается в системе координат пространства данных.
Изображения в настоящее время отображаются визуально одинакового размера после каждого увеличения (используя инструмент «Лупа» в окне matplotlib). В идеале я хотел бы иметь возможность масштабировать изображения по мере увеличения масштаба пространства данных, чтобы можно было более тщательно исследовать определенные кластеры.
В идеале, я бы предпочел сохранять каждое изображение с полным разрешением (или уменьшенным, сохраняя соотношение сторон) и вручную обновлять параметр масштаба OffsetImage после каждого события масштабирования. Но я не уверен, как извлечь или вычислить коэффициент масштабирования вида и какие события мне нужно прослушивать.
Ниже описано, как я создаю изображения. В идеале я хотел бы просто обновить параметр масштабирования любого Offsetimage, основываясь на том, насколько увеличено изображение в любое время.
for i in indices_to_render:
pt = self.points[i]
url = self.image_urls[i]
img = img_dict[url]
logging.debug('rendering image of size: %s for pt: %s from url: %s', str(img.shape), str(pt), url)
offset_img = OffsetImage(img, zoom=1, picker=True)
ab = AnnotationBbox(offset_img, pt, bboxprops=dict(edgecolor=border_color), xycoords='data')
ab.set_picker(True)
offset_img.set_picker(True)
self.artists.append(self.ax.add_artist(ab))
self.images.append(offset_img)