Parece que você deseja axvspan
, em vez de preencher as funções. A diferença é que axvspan
(e axhspan
) preencherá toda a extensão y (ou x) do gráfico, independentemente de como você amplia.
Por exemplo, vamos usar axvspan
para destacar a região x entre 8 e 14:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, alpha=0.5, color='red')
plt.show()
Você poderia usar fill_betweenx
para fazer isso, mas as extensões (xey) do retângulo estariam em coordenadas de dados . Com axvspan
, as extensões y do retângulo são padronizadas em 0 e 1 e estão nas coordenadas dos eixos (em outras palavras, porcentagens da altura do gráfico).
Para ilustrar isso, vamos fazer o retângulo se estender de 10% a 90% da altura (em vez de ocupar toda a extensão). Tente aplicar zoom ou panorâmica e observe que as extensões y dizem que são fixas no espaço de exibição, enquanto as extensões x se movem com o zoom / panorâmica:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, ymin=0.1, ymax=0.9, alpha=0.5, color='red')
plt.show()
fill_between
para linhas verticais mais "onduladas", dê uma olhada notransform
parâmetro (e esta resposta )