web-dev-qa-db-fra.com

Comment superposer directement un nuage de points au-dessus d'une image jpg dans matplotlib / Python?

J'ai besoin de tracer rapidement des images jpg qui résultent de la sortie d'un algorithme de suivi. Les compagnons avec les cadres jpg sont des fichiers texte contenant des données simples (x, y) localisant les cibles d'image qui sont suivies. Je voudrais utiliser matplotlib pour tracer les images jpg, puis superposer un nuage de points des données (x, y) qui sont lues dans le fichier texte et stockées dans une liste Pythonic. Ci-dessous, le code qui tracera l'image jpg, mais dans tout le nettoyage que j'ai fait des manuels et des pages d'aide de matplotlib, scipy et PIL, je ne trouve rien qui explique comment maintenir cette fenêtre de tracé et simplement superposer un nuage de points de des marqueurs simples à divers endroits (x, y) de l'image. Toute aide est grandement appréciée.

import matplotlib.pyplot as plt;
im = plt.imread(image_name);
implot = plt.imshow(im);
plt.show()
28
ely

La fonction pyplot.scatter() a été conçue sur mesure pour cette raison:

import matplotlib.pyplot as plt
im = plt.imread(image_name)
implot = plt.imshow(im)

# put a blue dot at (10, 20)
plt.scatter([10], [20])

# put a red dot, size 40, at 2 locations:
plt.scatter(x=[30, 40], y=[50, 60], c='r', s=40)

plt.show()

Voir documentation pour plus d'informations.

43
lothario

cela devrait fonctionner:

import matplotlib.pyplot as plt
im = plt.imread('test.png')
implot = plt.imshow(im)
plt.plot([100,200,300],[200,150,200],'o')
plt.show()

gardez à l'esprit que chaque pixel de l'image est une unité sur les axes x, y. Le 'o' est un moyen raccourci pour que la fonction plot utilise des cercles au lieu de lignes.

10
Paul

Je sais que cela a été répondu, mais de la même manière, zorder fonctionne également. Ce qui est génial si vous voulez placer quelque chose sur un nuage de points ou en dessous

import matplotlib as plt
im = plt.imread(image_name)
plt.imshow(im,zorder=1)
plt.scatter(x,y,zorder=2)
plt.show()

zorder inférieur signifie qu'il est en dessous d'autres choses

7
Ceddrick