2011-01-14 17 views
6

En primer lugar, soy nuevo en python y matplotlib. Necesito trazar varios sistemas de ecuaciones implícitas en una figura.Trazado del sistema de ecuaciones (implícitas) en matplotlib

Las ecuaciones están en forma de:

3x+2y=1 

¿Hay una manera fácil de trazar estos, aparte de hacer primero las ecuaciones explícita (es decir y=...)?

Respuesta

4

Puede utilizar contour() hacer parcelas implícitos en dos dimensiones espaciales:

x = numpy.linspace(-2., 2.) 
y = numpy.linspace(-2., 2.)[:, None] 
contour(x, y.ravel(), 3*x + 2*y, [1]) 

En 3 dimensiones, que sugieren el uso de Mayavi en lugar de matplotlib.

+0

Hm .. Esto parece generar un gráfico diferente al gráfico para y = (1-3x)/2, que debería ser el mismo. ¿Alguna idea de por qué? – 0sh

+0

@mewoshh: ¿Podría mostrar su código exacto, por favor? Debería ser algo así como 'contour (x.ravel(), y, y- (1-3 * x)/2, [0])'. Y el gráfico debe ser el mismo que el del código anterior. –

+0

Es lo mismo que 'contour (x.ravel(), y, y- (1-3 * x)/2, [0])'. El problema es que esto no es lo mismo que el gráfico fáctico de 'y = (1-3x)/2'. Compare esto con 'x = np.arange (-6,6,0.01); y = (1-3 * x)/2; plot (x, y) '. – 0sh

7
import numpy as np 
import matplotlib.pyplot as plt 
# Note the order of y,x. 
y,x=np.ogrid[-5:5:100j,-5:5:100j] 
plt.contour(x.ravel(),y.ravel(),3*x+2*y,[1]) 
plt.show() 

alt text

+0

Y para tres dimensiones de espacio, sugiero usar [Mayavi] (http://code.enthought.com/projects/mayavi/docs/development/html/mayavi/auto/mlab_helper_functions.html#enthought.mayavi.mlab. contour3d) en su lugar. (Eliminaré mi respuesta, porque la tuya tiene una imagen :) –

+0

@Sven Marnach: Me gusta su solución porque usa menos memoria. Tal vez recuperarlo? – unutbu

+0

OK, a petición especial :) –

Cuestiones relacionadas