graficas - plot python 3
Matplotlib: ¿Cómo trazar imágenes en lugar de puntos? (1)
Hay dos maneras de hacer esto.
-
imshow
la imagen usandoimshow
con laextent
kwarg establecida en función de la ubicación en la que desea que se encuentre la imagen. - Use una imagen de
OffsetImage
dentro 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:)