Cómo trazar múltiples funciones en la misma figura

2 minutos de lectura

avatar de usuario de user3277335
usuario3277335

¿Cómo puedo trazar las siguientes 3 funciones (es decir, sin, cos y la adición), en el dominio ten la misma figura?

import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(0, 2*np.pi, 400)

a = np.sin
b = np.cos
c = a + b

Avatar de usuario de Srivatsan
Srivatsan

Para trazar múltiples gráficos en la misma figura tendrás que hacer:

from numpy import *
import math
import matplotlib.pyplot as plt

t = linspace(0, 2*math.pi, 400)
a = sin
b = cos
c = a + b

plt.plot(t, a, 'r') # plotting t, a separately 
plt.plot(t, b, 'b') # plotting t, b separately 
plt.plot(t, c, 'g') # plotting t, c separately 
plt.show()

ingrese la descripción de la imagen aquí

Quizás una forma más pitónica de hacerlo.

from numpy import *
import math
import matplotlib.pyplot as plt

t = linspace(0,2*math.pi,400)
a = sin
b = cos
c = a + b

plt.plot(t, a, t, b, t, c)
plt.show()

ingrese la descripción de la imagen aquí

avatar de usuario de leeladam
leeladam

Solo usa la función plot como sigue

figure()
...
plot(t, a)
plot(t, b)
plot(t, c)

  • solo un pequeño cambio: plt.figure()

    – Bavafaali

    16 de junio de 2022 a las 19:31

Si desea trabajar con la figura, doy un ejemplo en el que desea trazar varias curvas ROC en la misma figura:

from matplotlib import pyplot as plt
plt.figure()
for item in range(0, 10, 1): 
    plt.plot(fpr[item], tpr[item])
plt.show()

Un método bastante conciso es concatenar los valores de la función horizontalmente para crear una matriz de formas. (len

t = np.linspace(0, 2*np.pi, 400)

a = np.sin
b = np.cos
c = a + b

plt.plot(t, np.c_[a, b, c]);

Si los datos no provienen de una matriz numpy y no desea la dependencia numpy, zip() es tu amigo.

plt.plot(t, list(zip(a, b, c)));

Dado que hay 3 gráficos diferentes en un solo gráfico, tal vez tenga sentido insertar una leyenda para distinguir cuál es cuál. Eso se puede hacer fácilmente pasando la etiqueta.

plt.plot(t, np.c_[a, b, c], label=['sin', 'cos', 'sin+cos']);
plt.legend();

img1

¿Ha sido útil esta solución?