CAv_1617_Gráficas3D

hace 279 días por sevillad1617

Algunos comandos para dibujar gráficas de funciones en dos variables.

f(x,y) = sin(3*x)+y^2 
       

El dibujo más básico es una simple aplicación de plot3d con los intervalos para las dos variables:

plot3d(f,(x,-4,4),(y,-4,4)) 
       

Añadimos ahora tres opciones:

  • adaptive=True activa un cierto modo que nos permite usar las dos opciones siguientes (es decir, sin eso lo siguiente daría errores).
  • initial_depth=X nos permite determinar el número de triángulos que forman la superficie; a mayor X más suave es.
  • color=LISTA nos permite elegir el mapa de color (cada valor de la altura z=f(x,y) tiene un color):
    • El nombre del mapa va justo después de colormaps. Los nombres de los mapas existentes se pueden ver con los comandos que están más abajo, y se pueden visualizar (quizás no todos) en http://matplotlib.org/examples/color/colormaps_reference.html.
    • colormaps[NOMBRE] es una función que devuelve colores, y la lista que se pone en la opción color=... se genera dando varios valores a esa función. Los valores que se dan van de 0 a 1 y vienen determinados en sxrange(...)
    • En la última parte, sxrange(0,1,PASO) determinamos el número de colores. Por ejemplo, PASO=0.25 daría cinco colores (dependiendo de la forma de la superficie podrían verse menos). Un valor como 0.01 es suficiente para producir una coloración suave.
plot3d( f,(x,-4,4),(y,-4,4), adaptive=True, initial_depth=6 , color=[colormaps['gist_rainbow'](i) for i in sxrange(0,1,0.01)] ) 
       

A continuación mostramos cómo conseguir la lista de mapas de colores.

listacolores = sorted(colormaps) len(listacolores); listacolores[3] 
       
plot3d(f,(x,-4,4),(y,-4,4)) 
       
plot3d( f,(x,-4,4),(y,-4,4), adaptive=True, initial_depth=6 , color=[colormaps['gist_rainbow'](i) for i in [0,0.01..1]] ) 
       

Por último, dibujemos las curvas de nivel. Los parámetros a determinar son:

  • contours=LISTA donde la lista contiene las alturas de las curvas que nos interesan. Se puede usar sxrange por ejemplo; a continuación se usa otra manera de generar listas: [MIN, SIGUIENTE..MAX].
  • Puedes probar con las otras opciones de dibujo del ejemplo siguiente (hay muchas más).
contour_plot(f, (x,-4,4), (y,-4,4), contours=[0,1..20], fill=False, cmap='gist_rainbow', labels=True,label_fontsize=12)