Intentando ejecutar este código desde AstroPy:docs
import matplotlib.pyplot as plt from astropy.visualization import astropy_mpl_style plt.style.use(astropy_mpl_style) from astropy.utils.data import get_pkg_data_filename from astropy.io import fits image_file = get_pkg_data_filename('tutorials/FITS-images/HorseHead.fits') fits.info(image_file) image_data = fits.getdata(image_file, ext=0) print(image_data.shape) plt.figure() plt.imshow(image_data, cmap='gray') plt.colorbar()Recibo una advertencia:
línea 19 plt.colorbar() MatplotlibDeprecationWarning: La eliminación automática de cuadrículas por pcolor() y pcolormesh() está en desuso desde 3.5 y se eliminará dos versiones menores más adelante; por favor llame a grid (Falso) primero.
Intenté llamar a plt.grid (Falso), pero sigo recibiendo esta advertencia/error. ¿Alguien sabe cómo resolver esto?
Para los usuarios que pueden haberse topado con este problema al buscar el mensaje de advertencia de desuso de Matplotlib 3.5. Cualquier estilo que tenga
axes.gridTrue puede desencadenar este problema. En general, se puede anular enplt.rcParams['axes.grid'] = False, pero se debe tener cuidado acerca de dónde y cuándo se establece.
ACTUALIZACIÓN 19/01/2022
He enviado un informe de error a astropy sobre este mensaje de advertencia. Ver problema de GitHub
ACTUALIZACIÓN 26/01/2022
Matplotlib solucionó este problema en matplotlib/matplotlib#22285 . He confirmado con la versión de desarrollo de Matplotlib 3.6 que la advertencia ya no aparece en el código en cuestión.
El problema es que astropy_mpl_style tiene la cuadrícula predeterminada y esto activa un mensaje de advertencia de desuso acerca de llamar a plt.grid(False) antes de llamar a plt.colorbar() en la versión 3.5 de Matplotlib. Este mensaje de advertencia aparece a pesar de hacer lo que dice porque el estilo tiene prioridad sobre las llamadas a funciones.
Una solución es anular la configuración de la cuadrícula astropy_mpl_style y evitar que la cuadrícula se encienda antes de llamar a plt.colorbar() .
astropy_mpl_style['axes.grid'] = FalseAsí es como se pliega en el código para evitar el mensaje de advertencia de Matplotlib versión 3.5
import matplotlib.pyplot as plt from astropy.visualization import astropy_mpl_style astropy_mpl_style['axes.grid'] = False plt.style.use(astropy_mpl_style) from astropy.utils.data import get_pkg_data_filename from astropy.io import fits image_file = get_pkg_data_filename('tutorials/FITS-images/HorseHead.fits') fits.info(image_file) image_data = fits.getdata(image_file, ext=0) print(image_data.shape) plt.figure() plt.imshow(image_data, cmap='gray') plt.colorbar()