Tenho um array com valores np.nan que quero plotar usando pcolor. Em princípio, tudo funciona, mas recebo um aviso do qual não consigo me livrar. Usar plt.imshow
não dá o aviso, mas preciso especificar as coordenadas x e y.
MatplotlibDeprecationWarning: Obter o array de um PolyQuadMesh retornará o array completo no futuro (descompactado). Para obter esse comportamento, defina o PolyQuadMesh com um array 2D .set_array(data2d).
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
x = np.linspace(-2,2,100)
y = np.linspace(-2,2,100)
X, Y = np.meshgrid(x,y)
X[X**2+Y**2>4] = np.nan
Y[X**2+Y**2>4] = np.nan
Z = np.exp(-(X**2+Y**2))
plt.pcolor(Y,X,Z, cmap='viridis')
plt.colorbar()
Eu uso matplotlib v3.9.2 e numpy v1.26.4.
Este aviso é devido a uma mudança em como a
pcolor
lógica interna é estruturada ( changenote aqui ). Ele é acionado quando o código colorbar chama internamenteget_array
o objeto retornado porpcolor
. Você pode silenciar o aviso repassando explicitamente seuZ
array para oset_array
método:Como alternativa, você pode atualizar seu Matplotlib para a versão 3.10+, já que essa descontinuação já expirou.