Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Atribuir gráficos a uma mesma variável

Minha dúvida se refere a chamar/atribuir todos os gráficos a uma variável "ax". Isso não pode gerar problemas? Não está usando o mesmo espaço de memória para coisas diferentes?

O código roda normalmente, mas queria saber porque isso funciona. Geralmente eu trabalho mais com outras linguagens e num código sequencial isso normalmente causaria problemas, teria que atribuir a variáveis diferentes, etc.

Para ser mais claro, me refiro ao código dos gráficos sempre usando a mesma variável ax, como a seguir.

sns.set_palette('Accent')
sns.set_style('darkgrid')
ax = sns.lineplot(x='mes', y='aumento', data=alucar)
ax.figure.set_size_inches(12,6)
ax.set_title('Aumento das Vendas Alucar 2017-2018', loc='left', fontsize=18)
ax.set_xlabel('Tempo', fontsize=14)
ax.set_ylabel('Aumento', fontsize=14)
ax = ax

Para gerar um próximo gráfico, também se usa a variável ax, mas ela já não estava alocada com o gráfico anterior? Obrigado!

2 respostas
solução!

Oi Guilherme,

Isso é bem comum quando trabalhamos com notebooks. Principalmente no caso de gráficos meio que damos por terminado o gráfico anterior e reaproveitamos as variáveis. Estamos redefinindo todos os valores da variável a cada plot. Outra prática possível é utilizar a matplotlib para definir os parâmetros de todas as figuras no início do código. Aí só usa o sns.lineplot sem colocar o ax=. Exemplo de uso do rcParams:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from cycler import cycler
mpl.rcParams['lines.linewidth'] = 2
mpl.rcParams['lines.linestyle'] = '--'
mpl.rcParams["figure.figsize"] = (20,3)
data = np.random.randn(50)
plt.plot(data)

O rc é uma abreviação de runtime. Mas não sei se tirei sua dúvida. No geral, no python é comum redefinir variáveis sem ter grandes problemas. Só precisa ter cuidado se algumas partes posteriores do código precisam dos valores antes da redefinição.

Oi Allan, obrigado pela resposta. Entendi sim. Era mais ou menos isso que eu imaginava mesmo, que depois de gerado o gráfico não "precisa" mais daquela variável e pode usar a memória que estava alocada pra ela pra outra coisa, mas ainda ficava uma certa "desconfiança" , pois em outros paradigmas de programação é incomum ficar re-utilizando a mesma variável.