Размещение пользовательских изображений в окне графика – как пользовательские маркеры данных или аннотирование этих маркеров

У меня есть набор изображений PNX 150x150px и набор координат (x, y), которым они соответствуют. Есть ли способ построить изображения на сетке? Например, я ищу решение R или Python для создания чего-то вроде следующего: введите описание изображения здесь

  • Анимированное название в matplotlib
  • Размер бункера в Matplotlib (гистограмма)
  • Легенды Matplotlib не работают
  • gnuplot против Matplotlib
  • Применение Matlotlib Crashing tkinter
  • Графический график Matplotlib: незначительные галочки исчезают, когда диапазон большой
  • Формат оси y в процентах
  • Есть ли готовое решение в matplotlib для планирования времен?
  • Получите легенду как отдельное изображение в Matplotlib
  • python matplotlib с градиентом цвета линии и цветной панелью
  • Изменения анимации квадратичной сетки (matshow)
  • Как показать графики matplotlib в python
  • 5 Solutions collect form web for “Размещение пользовательских изображений в окне графика – как пользовательские маркеры данных или аннотирование этих маркеров”

    Вы создаете ограничивающий прямоугольник, создавая экземпляр AnnotationBbox –once для каждого изображения, которое вы хотите отобразить; изображение и его координаты передаются конструктору.

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

    import matplotlib.pyplot as PLT from matplotlib.offsetbox import AnnotationBbox, OffsetImage from matplotlib._png import read_png fig = PLT.gcf() fig.clf() ax = PLT.subplot(111) # add a first image arr_hand = read_png('/path/to/this/image.png') imagebox = OffsetImage(arr_hand, zoom=.1) xy = [0.25, 0.45] # coordinates to position this image ab = AnnotationBbox(imagebox, xy, xybox=(30., -30.), xycoords='data', boxcoords="offset points") ax.add_artist(ab) # add second image arr_vic = read_png('/path/to/this/image2.png') imagebox = OffsetImage(arr_vic, zoom=.1) xy = [.6, .3] # coordinates to position 2nd image ab = AnnotationBbox(imagebox, xy, xybox=(30, -30), xycoords='data', boxcoords="offset points") ax.add_artist(ab) # rest is just standard matplotlib boilerplate ax.grid(True) PLT.draw() PLT.show() 

    введите описание изображения здесь

    Один из способов сделать это в R (2.11.0 и выше):

     library("png") # read a sample file (R logo) img <- readPNG(system.file("img", "Rlogo.png", package="png")) # img2 <- readPNG(system.file("img", "Rlogo.png", package="png")) img2 <- readPNG("hand.png", TRUE) # here import a different image if (exists("rasterImage")) { plot(1:1000, type='n') rasterImage(img, 100, 100, 200, 200) rasterImage(img2, 300, 300, 400, 400) } 

    Подробнее см. «readPNG» и «RasterImage». введите описание изображения здесь

    Для этого я бы использовал matplotlib. эта демонстрация показывает нечто подобное, я уверен, что она может быть адаптирована к вашей конкретной проблеме

    Также в R вы можете использовать функции my.symbols и ms.image в пакете TeachingDemos.

    В R читается в справке (rasterImage):

     require(grDevices) #set up the plot region: op <- par(bg = "thistle") <h> plot(c(100, 250), c(300, 450), type = "n", xlab="", ylab="") image <- as.raster(matrix(0:1, ncol=5, nrow=3)) rasterImage(image, 100, 300, 150, 350, interpolate=FALSE) rasterImage(image, 100, 400, 150, 450) rasterImage(image, 200, 300, 200 + xinch(.5), 300 + yinch(.3), interpolate=FALSE) rasterImage(image, 200, 400, 250, 450, angle=15, interpolate=FALSE) par(op) 

    …. это хороший пример.

    Python - лучший язык программирования в мире.