graficas - plot python 3
Matplotlib: ¿Cómo trazar imágenes en lugar de puntos? (1)
Hay dos maneras de hacer esto.
-
imshowla imagen usandoimshowcon laextentkwarg establecida en función de la ubicación en la que desea que se encuentre la imagen. - Use una imagen de
OffsetImagedentro de unAnnotationBbox.
La primera es la más fácil de entender, pero la segunda tiene una gran ventaja. kEl enfoque del cuadro de anotación permitirá que la imagen permanezca en un tamaño constante a medida que se acerca. Al usar imshow se vinculará el tamaño de la imagen a las coordenadas de datos del trazado.
Aquí hay un ejemplo de la segunda opción:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.offsetbox import OffsetImage, AnnotationBbox
from matplotlib.cbook import get_sample_data
def main():
x = np.linspace(0, 10, 20)
y = np.cos(x)
image_path = get_sample_data(''ada.png'')
fig, ax = plt.subplots()
imscatter(x, y, image_path, zoom=0.1, ax=ax)
ax.plot(x, y)
plt.show()
def imscatter(x, y, image, ax=None, zoom=1):
if ax is None:
ax = plt.gca()
try:
image = plt.imread(image)
except TypeError:
# Likely already an array...
pass
im = OffsetImage(image, zoom=zoom)
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
main()
Quiero leer una lista de imágenes en Python / Matplotlib y luego trazar estas imágenes en lugar de otros marcadores (como puntos) en una gráfica. Lo he intentado con ishow pero no lo he logrado, porque no puedo cambiar la imagen a otra posición y escalarla adecuadamente. Tal vez alguien tenga una buena idea:)