Gráficos de contorno

Un trazado de contorno es un método gráfico para visualizar la superficie 3D mediante el trazado de cortes en Z constantes llamados contornos en un formato 2D. El gráfico de contorno es una alternativa a un gráfico de superficie tridimensional

El gráfico de contorno está formado por:

  • Eje vertical : Variable independiente 2
  • Eje horizontal : Variable independiente 1
  • Líneas : valores de iso-respuesta, se pueden calcular con la ayuda (x,y).

La variable independiente suele estar restringida a una cuadrícula regular. Las técnicas reales para determinar los valores correctos de isorrespuesta son bastante complejas y casi siempre generadas por computadora.

El gráfico de contorno se utiliza para representar el cambio en los valores Z en comparación con los valores X e Y. Si los datos (o la función) no forman una cuadrícula regular, normalmente debe realizar una interpolación 2D para formar una cuadrícula regular.

Para datos de una variable, se considera necesaria una secuencia de ejecución/histograma. Para datos de dos variables, se considera necesario un diagrama de dispersión. Los gráficos de contorno también pueden tener coordenadas polares (r, theta) en lugar de las tradicionales coordenadas rectangulares (x, y, z). 

Tipos de gráficos de contorno:

  • Gráfico de contorno rectangular : una proyección de un gráfico 2D en un lienzo rectangular 2D. Es la forma más común del diagrama de contorno.
  • Gráfica de contorno polar : La gráfica de contorno polar se traza usando las coordenadas polares r y theta . La variable de respuesta aquí es la colección de valores generados al pasar r y theta a la función dada, donde r es la distancia desde el origen y theta es el ángulo desde el eje x positivo.
  • Gráfico de contorno ternario : el gráfico de contorno ternario se utiliza para representar la relación entre 3 variables explicativas y la variable de respuesta en forma de un triángulo relleno.

El gráfico de contorno se puede trazar en diferentes lenguajes de programación:

  • Python/ Matplotlib : el gráfico de contorno se puede trazar utilizando las funciones plt.contour o plt.contourf , donde plt es matplotlib.pyplot . La diferencia entre estos dos es que plot.contour genera un diagrama de contorno hueco, el plt.contourf generado lleno.
  • Matlab : se pueden utilizar funciones como contourf (2d-plot) y contour3 (3D-contour) para trazar contornos
  • R : puede crear un gráfico de contorno con funciones de contorno lleno en R.

Implementaciones:

  • Gráfico de contorno rectangular: a continuación se muestra el código de muestra para trazar gráficos de contorno rectangular en Python y matplotlib.

Python3

#  imports
import numpy as np
import matplotlib.pyplot as plt
#
# define a function
def func(x, y):
    return np.sin(x) ** 2 +  np.cos(y) **2
# generate 50 values b/w 0 a5
x = np.linspace(0, 5, 50)
y = np.linspace(0, 5, 50)
  
# Generate combination of grids
X, Y = np.meshgrid(x, y)
Z = func(X, Y)
  
# Draw rectangular contour plot
plt.contour(X, Y, Z, cmap='gist_rainbow_r');

  • Gráfico de contorno polar: para trazar el gráfico de contorno polar, primero debemos definir r y theta. A continuación se muestra el código de muestra para trazar gráficos de contorno polar utilizando subgráficos de matplotlib.

Python3

# generate r and theta arrays
rad_arr = np.radians(np.linspace(0, 360, 20))
r_arr = np.arange(0, 1, .1)
# define function
def func(r, theta):
  return r * np.sin(theta) 
  
r, theta = np.meshgrid(r_arr, rad_arr)
# get the values of response variables
values = func(r,theta)
  
# plot the polar coordinates
fig, ax = plt.subplots(subplot_kw=dict(projection='polar'))
ax.contourf(theta, r, values, cmap='Spectral_r')
  
plt.show()

Gráfico de contorno polar

  • Gráfico de contorno ternario: Matplotlib no proporciona una API definitiva para trazar el gráfico de contorno ternario, sin embargo, hay muchos otros paquetes que lo hacen. En este ejemplo, usaremos la biblioteca Plotly.

Python3

# install & import plotly
! pip install plotly
import plotly.figure_factory as ff
  
# Define variables
a = np.array([0. , 0. , 0., 0., 1./3, 1./3, 1./3, 2./3, 2./3, 1.])
b = np.array([0., 1./3, 2./3, 1., 0., 1./3, 2./3, 0., 1./3, 0.])
c = 1 - a - b
# Define function that generates response variable
func = (a - 0.02) * b * (a - 0.5) * (b - 0.4) * (c - 1)**2
  
# plot ternary contour
fig = ff.create_ternary_contour(np.array([a, b, c]), func,
                                pole_labels=['a', 'b', 'c'],
                                interp_mode='cartesian',
                                colorscale='Viridis',)
fig.show()

Gráfica de contorno ternario

Referencias:

Publicación traducida automáticamente

Artículo escrito por pawangfg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *