J'essaie de tracer des points sur un contour en utilisant Matplotlib.Tracer des points sur le contour - Matplotlib/Python
J'ai un champ scalaire à partir duquel je veux tracer le contour. Cependant, mon ndarray a une dimension 0 x 20, mais mon espace réel varie de 4 à 4.
Je peux tracer ce contour en utilisant ce morceau de code:
x, y = numpy.mgrid[-4:4:20*1j, -4:4:20*1j]
# Draw the scalar field level curves
cs = plt.contour(scalar_field, extent=[-4, 4, -4, 4])
plt.clabel(cs, inline=1, fontsize=10)
Le problème est Parce que je dois tracer quelques points sur cette intrigue, et que ces points sont obtenus en utilisant le ndarray, c'est-à-dire, je reçois des points variant en tant que dimension de ce tableau.
J'ai essayé de tracer ces points en utilisant ce code:
def plot_singularities(x_dim, y_dim, steps, scalar_field, min_points, max_points, file_path):
"""
:param x_dim : the x dimension of the scalar field
:param y_dim : the y dimension of the scalar field
:param steps : the discretization of the scalar field
:param file_path : the path to save the data
:param scalar_field : the scalar_field to be plot
:param min_points : a set (x, y) of min points of the scalar field
:param max_points : a set (x, y) of max points of the scalar field
"""
min_points_x = min_points[0]
min_points_y = min_points[1]
max_points_x = max_points[0]
max_points_y = max_points[1]
plt.figure()
x, y = numpy.mgrid[-x_dim:x_dim:steps*1j, -y_dim:y_dim:steps*1j]
# Draw the scalar field level curves
cs = plt.contour(scalar_field, extent=[-x_dim, x_dim, -y_dim, y_dim])
plt.clabel(cs, inline=1, fontsize=10)
# Draw the min points
plt.plot(min_points_x, min_points_y, 'ro')
# Draw the max points
plt.plot(max_points_x, max_points_y, 'bo')
plt.savefig(file_path + '.png', dpi=100)
plt.close()
Mais j'ai cette image:
ce qui est inexact.
Si je change cette ligne:
cs = plt.contour(scalar_field, extent=[-x_dim, x_dim, -y_dim, y_dim])
Pour que l'on:
cs = plt.contour(scalar_field)
je reçois le comportement souhaité, mais l'étendue ne montre pas mon vrai espace de données , mais la dimension ndarray.
Enfin, si je ne conspire pas ces points (commentaire l'intrigue() lignes), je peux les degrés que je veux:
Mais je dois tracer les points. Les deux données se trouvent dans le même espace. Mais la fonction contour() me permet de spécifier la grille. Je pourrais trouver une manière de le faire en traçant les points.
Je me demande comment puis-je définir correctement les extensions comme je le souhaite.
Merci d'avance.
Il serait utile de savoir ce que vous attendiez. Que devrait être "l'espace de données"? Les points et le contour sont-ils incorrects ou juste le contour? – amd
Si vous regardez la deuxième image, elle est correcte (les graphiques). Cependant, il montre les étendues comme les dimensions de ndarray (de 0 à 20). Je voudrais montrer qu'il varie d'un espace de mes données (avec le centre en 0,0 et variant de -4 à 4). J'appelle mon "espace de données" comme une analogie avec les concepts de CG à l'espace d'image (ndarray) et l'espace du monde (mon espace de données réel). – pceccon