Этот вопрос связан с этим хорошо принятым.В этом вопросе я вижу ответы о том, как наносить изображения (или разные изображения) на разные координаты, например на точечную диаграмму.
Используя TextArea
Я могу поместить небольшие строки вместо изображений в разных координатах.
Как насчет того, чтобы разместить мини-версию сюжета / изображения, созданного самим matplotlib?Предположим, что вместо использования image.jpg
я хочу использовать результат plt.stem(arr)
в качестве изображения на точечных диаграммах.
Как я могу это сделать?Как насчет миниатюрной версии вывода plt.plot(x, y)
?
Я попытался изменить приведенную в связанном вопросе функцию так:
def stem_scatter(x, y, arr, ax=None):
from matplotlib.offsetbox import AnnotationBbox, DrawingArea
if ax is None:
ax = plt.gca()
im = DrawingArea(0.1, 0.1)
im.add_artist(plt.stem(arr))
x, y = np.atleast_1d(x, y)
artists = []
for x0, y0 in zip(x, y):
ab = AnnotationBbox(im, (x0, y0), xycoords='data', frameon=False)
artists.append(ax.add_artist(ab))
ax.update_datalim(np.column_stack([x, y]))
ax.autoscale()
return artists
Но это выдает ошибку: AttributeError: 'StemContainer' object has no attribute 'is_transform_set'
РЕДАКТИРОВАТЬ: Из связанного вопроса:
"…. but the second has a large advantage. The annotation box approach will allow the image to stay at a constant size as you zoom in."
это было бы желательным признаком в принятом ответе, потому что при увеличении хотелось бы видеть относительные положения точек разброса.Если изображение, полученное с помощью рассеянного графика, не поддерживает фиксированный размер (относительно экрана в противоположность текущим пределам оси), тогда увеличение масштаба будет мало чем помочь.