with outside horizontal found example python matplotlib

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: