ipeadata-lab / ipeaplot

ipeaplot: criando graficos no padrão editorial do Ipea
https://ipeadata-lab.github.io/ipeaplot/
Other
1 stars 0 forks source link

rlang::eval_tidy(colour_var, plot$data) : object 'cyl' not found #39

Closed cavalcanti1985 closed 4 months ago

cavalcanti1985 commented 4 months ago

@PedroJorge7 , depois das últimas mudanças no ipeaplot, identifiquei o seguinte problema:

Quando rodo este código:

fig_raw <- ggplot() +
  geom_point(data = mtcars, aes(x = hp , y = mpg, color = cyl)) +
  labs(y='Consumo de Combustível',
       x ='Potência (Número de cavalos)',
       color='Cilindradas')

# Adicionando os padrões do Ipea
fig_raw +
  scale_color_ipea() +
  theme_ipea()

Recebo este erro:

Error in rlang::eval_tidy(colour_var, plot$data) : object 'cyl' not found

O problema parece ser na função scale_color_ipea() , pois o código roda normalmente sem ela.

Parece-me que a função scale_color_ipea() não consegue receber input do geom_point(). Quando coloco as variáveis direto em ggplot(), o gráfico é gerado:

fig_raw <- ggplot(data = mtcars, aes(x = hp , y = mpg, color = cyl)) +
  geom_point() +
  labs(y='Consumo de Combustível',
       x ='Potência (Número de cavalos)',
       color='Cilindradas')

# Adicionando os padrões do Ipea
fig_raw +
  scale_color_ipea() +
  theme_ipea()
PedroJorge7 commented 4 months ago

Fiz um fix no var_evaluated <- rlang::eval_tidy(...). Como estava hoje ele procurava o código dentro do mapping principal (dentro do ggplot) em vez de procurar dentro do argumento do geom_point. Veja se as modificações resolvem (eu testei aqui e funcionou)