Usando Python no RMarkdown através do reticulate - erro com pacote altair

Estou tentando usar o pacote “altair” do Python no RMarkdown no RStudio Cloud através da biblioteca “reticulate”. Fiz o setup conforme abaixo

knitr::opts_chunk$set(echo = TRUE)

library(reticulate)
virtualenv_create("test-reticulate")
py_install("pandas", envname = "test-reticulate")
py_install("altair", envname = "test-reticulate")
use_virtualenv("test-reticulate")

E criei a visualização conforme abaixo:

import altair as alt
import pandas as pd

source = pd.DataFrame({
    'a': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
    'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})

alt.Chart(source).mark_bar().encode(
    x='a',
    y='b'
)

Mas quando rodo o código aparece o seguinte erro:

Python 3.6.12 (/home/rstudio-user/.local/share/r-miniconda/envs/r-reticulate/bin/python)
Reticulate 1.18 REPL – A Python interpreter in R.
AttributeError: module ‘altair’ has no attribute ‘Chart’

A parte do “pandas” funciona porém quando chega no “altair” ocorre o erro.

Por algum motivo ele parece não estar usando o ambiente que vc configurou. Veja que no caminho acima o env que ele está apontando é r-reticulate.

Acho que colocar:

knitr::opts_chunk$set(echo = TRUE)

library(reticulate)
virtualenv_create("test-reticulate")
py_install("pandas", envname = "test-reticulate")
py_install("altair", envname = "test-reticulate")
use_virtualenv("test-reticulate")

em um chunk não é uma boa ideia porque vc vai re-criar o ambiente todas as vezes que rodar o documento. Então, eu deixaria apenas o use_virtualenv("test-reticulate").

Obrigado @dfalbel

Eu tentei deixar só use_virtualenv("test-reticulate") mas deu erro. Deixei conforme abaixo:

knitr::opts_chunk$set(echo = TRUE)

library(reticulate)
#virtualenv_create("test-reticulate")
#py_install("pandas", envname = "test-reticulate")
#py_install("altair", envname = "test-reticulate")
use_virtualenv("test-reticulate")

Porém não parece ter funcionado pois ainda não está apontando para o ambiente que criei :frowning:

Python 3.8.7 (/cloud/project/test-reticulate/bin/python)
Reticulate 1.18 REPL – A Python interpreter in R.
alt.Chart(…)

O projeto pode ser acessado por aqui se facilitar.