J'aimerais obtenir des données à partir d'un seul contour de données 2D uniformément espacées (données de type image).
Basé sur l'exemple trouvé dans une question similaire : Comment puis-je obtenir les valeurs (x,y) de la ligne qui est tracée par un tracé de contour (matplotlib) ?
>>> import matplotlib.pyplot as plt
>>> x = [1,2,3,4]
>>> y = [1,2,3,4]
>>> m = [[15,14,13,12],[14,12,10,8],[13,10,7,4],[12,8,4,0]]
>>> cs = plt.contour(x,y,m, [9.5])
>>> cs.collections[0].get_paths()
Le résultat de cet appel dans cs.collections[0].get_paths()
est :
[Path([[ 4. 1.625 ]
[ 3.25 2. ]
[ 3. 2.16666667]
[ 2.16666667 3. ]
[ 2. 3.25 ]
[ 1.625 4. ]], None)]
Sur la base des graphiques, ce résultat est logique et semble être une collection de paires (y,x) pour la ligne de contour.
À part le fait de boucler manuellement sur cette valeur de retour, d'extraire les coordonnées et d'assembler des tableaux pour la ligne, existe-t-il de meilleures façons de récupérer des données à partir d'un fichier de type matplotlib.path
objet ? Y a-t-il des pièges à éviter lors de l'extraction de données d'un objet de type matplotlib.path
?
Par ailleurs, existe-t-il des alternatives au sein de matplotlib
ou mieux encore numpy
/ scipy
pour faire une chose similaire ? L'idéal serait d'obtenir un vecteur haute résolution de paires (x,y) décrivant la ligne, qui pourrait être utilisé pour une analyse plus approfondie, car en général mes ensembles de données ne sont pas aussi petits ou simples que l'exemple ci-dessus.