Intenté buscar a través de Stack Overflow para este problema y no pude encontrar ninguna solución a mi situación específica, que es la siguiente (por cierto, también soy un novato de Python):
**Estoy usando Google Colab (Gratis).
Estoy tratando de visualizar algunos datos (temperatura global) en un gráfico radial, siguiendo un tutorial que encontré en línea. Todo parecía ir decentemente hasta que se produjo la animación final; inicialmente todo estaba bien, con la excepción de esta advertencia:
El tamaño de la animación alcanzó los 22083561 bytes, superando el límite de 20971520.0. Si está seguro de que desea incrustar una animación más grande, establezca el parámetro rc animation.embed_limit en un valor mayor (en MB). Este y otros fotogramas se eliminarán.
Busqué este bit/error de información y descubrí que el siguiente código aumentaría el límite:
from matplotlib import rcParams
rcParams['animation.embed_limit'] = 2**128
A partir de ahí, mis sesiones se desconectaron alrededor de 1 minuto después de ejecutar el código de salida apropiado. Se necesita reiniciar el tiempo de ejecución y establecer animation.embed_limit en 20 para que pueda volver a mi estado semi-exitoso de generar una animación incompleta.
Cualquier ayuda con esto sería muy apreciada.
El código es el siguiente
# Drive Mounting
from google.colab import drive
drive.mount('/content/drive')
# Library Imports
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation
from matplotlib import rc
rc('animation', html='jshtml')
from matplotlib import rcParams
rcParams['animation.embed_limit'] = 2**128
import numpy as np
# Raw Data Import
hadcrut = pd.read_csv(
'/content/drive/MyDrive/HadCRUT.4.6.0.0.monthly_ns_avg.txt',
delim_whitespace=True,
usecols=[0, 1],
header=None)
# Data Prep
hadcrut['year'] = hadcrut.iloc[:, 0].apply(lambda x: x.split("/")[0]).astype(int)
hadcrut['month'] = hadcrut.iloc[:, 0].apply(lambda x: x.split("/")[1]).astype(int)
hadcrut = hadcrut.rename(columns={1: 'value'})
hadcrut = hadcrut.iloc[:, 1:]
hadcrut = hadcrut.drop(hadcrut[hadcrut['year'] == 2018].index)
hadcrut = hadcrut.set_index(['year', 'month'])
hadcrut -= hadcrut.loc[1850:1900].mean()
hadcrut = hadcrut.reset_index()
years = hadcrut['year'].unique()
fig = plt.figure(figsize=(14,14))
ax1 = plt.subplot(111, projection='polar')
ax1.axes.get_yaxis().set_ticklabels([])
ax1.axes.get_xaxis().set_ticklabels([])
fig.set_facecolor('#323331')
full_circle_thetas = np.linspace(0, 2*np.pi, 1000)
blue_line_one_radii = [1.0]*1000
red_line_one_radii = [2.5]*1000
red_line_two_radii = [3.0]*1000
ax1.plot(full_circle_thetas, blue_line_one_radii, c='blue')
ax1.plot(full_circle_thetas, red_line_one_radii, c='red')
ax1.plot(full_circle_thetas, red_line_two_radii, c='red')
ax1.text(np.pi/2, 1.0, '0.0 C', color='blue', ha='center', fontdict={'fontsize': 20})
ax1.text(np.pi/2, 2.5, '1.5 C', color='red', ha='center', fontdict={'fontsize': 20})
ax1.text(np.pi/2, 3.0, '2.0 C', color='red', ha='center', fontdict={'fontsize': 20})
def update(i):
year = years[i]
r = hadcrut[hadcrut['year'] == year]['value'] + 1
theta = np.linspace(0, 2*np.pi, 12)
ax1.grid(False)
ax1.set_title('Global Temperature Change (1850-2017)', color='white', fontdict={'fontsize': 20})
ax1.set_ylim(0, 3.25)
ax1.set_facecolor('#000100')
ax1.plot(theta, r, c=plt.cm.viridis(i*2))
return ax1
anim = FuncAnimation(fig, update, frames=len(years), interval = 50, repeat_delay = 1000)
anim
Y aquí está el registro de tiempo de ejecución desde el reinicio hasta la desconexión
"16 de abril de 2022, 16:18:38", ADVERTENCIA, futuro: "16 de abril de 2022, 4:18:38 p.:18:38 p. m.", INFORMACIÓN, Iniciando almacenamiento en búfer para d5ff7869-edb3-4e31-a38e-20e2c655f7d2: c7df80dc0b1b4ae7959d1ea88b633edb "16 de abril de 2022, 4:16:35 p. m.", INFORMACIÓN, Adaptación al protocolo v5.1 para kernel d5ff3869-edb -4e31-a38e-20e2c655f7d2 "16 de abril de 2022, 4:16:33 p. Use Control-C para detener este servidor y cerrar todos los núcleos (dos veces para omitir la confirmación). "16 de abril de 2022, 4:13:35 p. 16 de abril de 2022, 4:13:35 p. m.", INFO, 0 núcleos activos "16 de abril de 2022, 4:13: 35 p. m.", ADVERTENCIA, /etc/jupyter/jupyter_notebook_config.json "16 de abril de 2022, 4:13:35 p. m.", ADVERTENCIA, /etc/jupyter/jupyter_notebook_config.json "16 de abril de 2022, 4:13:35 p. m. ", INFORMACIÓN, Escribiendo el secreto de la cookie del servidor de notebook en /root/.local/share/jupyter/runtime/notebook_cookie_secret "16 de abril de 2022, 4:13:35 p. m.", ADVERTENCIA, Advertencia futura) "16 de abril de 2022, 4:13:35 PM",ADVERTENCIA,"/usr/local/lib/python3.7/dist-packages/traitlets/traitlets.py:2205: FutureWarning: La compatibilidad con comillas adicionales alrededor de cadenas está obsoleta en traitlets 5.0. Puede usar '/content' en lugar de '""/content""' si necesita rasgos >=5". "16 de abril de 2022, 4:13:35 p. 4:13:35 p. m.", ADVERTENCIA,"/usr/local/lib/python3. 7/dist-packages/traitlets/traitlets.py:2205: FutureWarning: La compatibilidad con comillas adicionales alrededor de cadenas está obsoleta en traitlets 5.0. Puede usar '/' en lugar de '""/""' si necesita rasgos >=5." "16 de abril de 2022, 4:13:35 p. m.", ADVERTENCIA, Advertencia futura) "16 de abril de 2022, 4: 13:35 PM",ADVERTENCIA,"/usr/local/lib/python3.7/dist-packages/traitlets/traitlets.py:2205: FutureWarning: La compatibilidad con comillas adicionales alrededor de cadenas está obsoleta en traitlets 5.0. Puede usar '172.28.0.12' en lugar de '""172.28.0.12""' si necesita rasgos >=5". "16 de abril de 2022, 4:13:35 p. /root/.local/share/jupyter/runtime/notebook_cookie_secret "16 de abril de 2022, 4:13:35 p. m.", ADVERTENCIA, Advertencia futura) "16 de abril de 2022, 4:13:35 PM",ADVERTENCIA,"/usr/local/lib/python3.7/dist-packages/traitlets/traitlets.py:2205: FutureWarning: La compatibilidad con comillas adicionales alrededor de cadenas está obsoleta en traitlets 5.0. Puede usar '/contenido' en lugar de '""/contenido""' si necesita rasgos >=5". "16 de abril de 2022, 4:13:35 p. 4:13:35 PM",ADVERTENCIA,"/usr/local/lib/python3.7/dist-packages/traitlets/traitlets.py:2205: FutureWarning: La compatibilidad con comillas adicionales alrededor de cadenas está obsoleta en traitlets 5.0. Puede usar '/' en lugar de '""/""' si necesita rasgos >=5." "16 de abril de 2022, 4:13:35 p. m.", ADVERTENCIA, Advertencia futura) "16 de abril de 2022, 4: 13:35 p. m.", ADVERTENCIA,"/usr/local/lib/python3.7/dist-packages/traitlets/traitlets. py:2205: FutureWarning: La compatibilidad con comillas adicionales alrededor de las cadenas está obsoleta en traitlets 5.0. Puede usar '172.28.0.2' en lugar de '""172.28.0.2""' si necesita rasgos >=5".
Cualquier ayuda sería muy apreciada.
Solución del problema
Con la ayuda de @r-beginners, pude resolver un poco este problema al reducir el tamaño de la imagen (fig) a aproximadamente (8,8), lo que me permitió renderizarla completamente sin errores.
Previamente:
fig = plt.figure(figsize=(14,14))
Después:
fig = plt.figure(figsize=(8,8))
Honestamente, dado lo simple que era el gráfico, no pensé que el proceso hubiera topado con una pared de recursos. Sin embargo, podría haber mucho más involucrado de lo que pensaba en el cálculo y la creación del gráfico, y podría ser mi ingenuidad sostenida.
Aún así, ¡espero que esto ayude a alguien más!
tl; dr: el tamaño del archivo de salida es demasiado grande, suponga un límite con Google Colab (versión gratuita), reduzca el tamaño del archivo de salida, éxito
No hay comentarios.:
Publicar un comentario