python - outside - no handles with labels found to put in legend.
Relleno Matplotlib entre mĂșltiples lĂneas (3)
Para usar fill_between
, especifique los valores X primero, que los dos conjuntos Y que desea "llenar entre". Un ejemplo es mostrar a continuación:
import pylab as plt
import numpy as np
X = np.linspace(0,3,200)
Y1 = X**2 + 3
Y2 = np.exp(X) + 2
Y3 = np.cos(X)
plt.plot(X,Y1,lw=4)
plt.plot(X,Y2,lw=4)
plt.plot(X,Y3,lw=4)
plt.fill_between(X, Y1,Y2,color=''k'',alpha=.5)
plt.fill_between(X, Y1,Y3,color=''y'',alpha=.5)
plt.show()
Si, en cambio, solo desea llenar entre Y2 e Y3:
plt.fill_between(X, Y2,Y3,color=''m'',alpha=.5)
esto te daría
Me gustaría llenar entre 3 líneas en matplotlib.pyplot, pero desafortunadamente el fill_between
me da la oportunidad de completar solo dos líneas. ¿Alguna idea de cómo lidiar con esto?
Editar:
Ok, no expliqué lo que realmente quiero decir ya que no puedo agregar la imagen con mi reputación actual, así que tal vez de esa manera:
Intento llenar el polígono delimitado por estas líneas y no tengo idea de cómo fill_between me da la oportunidad de ocupar solo el área entre dos de ellas. Debajo de la ecuación de relleno:
y <= 4- 2x
y <= 3 - 1/2x
y <= 1 - x
y >= 0
x >= 0
x e y mayor que 0 es obvio. Comienzo la trama desde (0,0) pero todavía tengo 3 líneas ...
y <= 4- 2x
y <= 3 - 1/2x
y <= 1 - x
Si comienzas la trama en el punto (0, 0), y por lo tanto no necesitas considerar el área del polígono que no está en el primer cuadrante, entonces esto debería ser el truco en esta situación particular:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0,10,0.1)
# The lines to plot
y1 = 4 - 2*x
y2 = 3 - 0.5*x
y3 = 1 -x
# The upper edge of polygon (min of lines y1 & y2)
y4 = np.minimum(y1, y2)
# Set y-limit, making neg y-values not show in plot
plt.ylim(0, 5)
# Plotting of lines
plt.plot(x, y1,
x, y2,
x, y3)
# Filling between line y3 and line y4
plt.fill_between(x, y3, y4, color=''grey'', alpha=''0.5'')
plt.show()
Simplemente calcule los puntos de esquina del polígono, es decir, los puntos donde las líneas se cruzan. Luego traza el polígono usando pyplot.fill .
Ejemplo:
import matplotlib.pyplot as plt
# define corner points
x = [1,2,1,0]
y = [2,1,0,1]
# plot
plt.fill(x,y)
plt.show()
Imagen resultante: