```{r}
library(reticulate)#abrindo o pacote reticulate
```

```{r}
virtualenv_create("env_me315", python = "C:/Program Files/Python312/python.exe")#criando um ambiente virtual pra usar python
```

```{r}
use_virtualenv("env_me315", required = TRUE) #manda usar o ambiente virtual criado
```

```{python}
#!pip install plotnine
```

```{python}
#questao 1
from plotnine import *
from plotnine.data import diamonds

# Ver as primeiras linhas
print(diamonds.head())
```

```{python}
#questao 2
# Cria o gráfico usando ggplot (plotnine)
plot = (
    ggplot(diamonds) +  # Define o dataset diamonds para o gráfico
    aes(x='carat', y='price', color='cut') +  # Define as variáveis do gráfico: x, y e cor por corte
    geom_point(alpha=0.4, size=1.5) +  # Adiciona pontos com transparência (alpha) e tamanho definido
    scale_y_continuous(labels=lambda l: [f"${x:,.0f}" for x in l]) +  # Formata o eixo y como valores monetários
    labs(
        title='Relação entre Peso (Carat) e Preço dos Diamantes',  # Título do gráfico
        x='Peso (Carat)',  # Label do eixo X
        y='Preço (USD)',   # Label do eixo Y
        color='Qualidade do Corte'  # Label da legenda
    ) +
    theme_minimal() +  # Aplica um tema minimalista
    theme(
        plot_title=element_text(size=14, weight='bold'),  # Tamanho e peso da fonte do título
        axis_title=element_text(size=12),                 # Tamanho da fonte dos eixos
        legend_position='right'                           # Posição da legenda
    )
)

# Salva o gráfico como arquivo PNG
plot.save("plot.png", width=12, height=8, dpi=300)  # Pode-se adicionar width, height e dpi para maior controle do tamanho e resolução

```


##Ações tomadas para garantir boa qualidade do gráfico

Transparência (alpha=0.4): reduz a sobreposição dos pontos, facilitando a visualização de densidades em regiões com muitos dados.

Escala e rótulos claros: eixos nomeados e o eixo y formatado em dólares tornam o gráfico mais legível e informativo.

Cores por categoria (color='cut'): adiciona uma dimensão qualitativa que permite observar se o tipo de corte influencia o preço para um mesmo peso.

Tema limpo (theme_minimal): remove elementos visuais desnecessários e melhora o foco na relação entre as variáveis.

Tamanho dos pontos ajustado (size=1.5): garante boa distinção visual sem ruído excessivo.

##Resposta 2 O gráfico de dispersão mostra uma forte associação positiva entre o peso (carat) e o preço (price) dos diamantes: à medida que o peso aumenta, o preço cresce de forma não linear, sugerindo que diamantes maiores são desproporcionalmente mais caros. Observa-se também que a qualidade do corte influencia o preço — para um mesmo peso, diamantes com cortes de melhor qualidade tendem a apresentar preços mais altos. A transparência e o tema limpo permitem visualizar claramente a tendência geral e a variação dentro de cada categoria, produzindo um gráfico informativo e visualmente equilibrado.


```{r}
knitr::include_graphics("plot.png", dpi = 300, auto_pdf = TRUE)
```

```{python}
# Importa a biblioteca plotnine e o dataset diamonds
from plotnine import *
from plotnine.data import diamonds

# Cria o segundo gráfico
plot2 = (
    ggplot(diamonds) +  # Define o dataset diamonds para o gráfico
    aes(x='carat', y='price', color='cut') +  # Define variáveis do gráfico: x, y e cor por corte
    geom_point(alpha=0.4, size=1.2, show_legend=False) +  # Adiciona pontos com transparência e tamanho menor; oculta a legenda
    geom_smooth(method='lm', se=False, color='black', size=1) +  # Adiciona linha de regressão linear sem intervalo de confiança
    facet_wrap('~cut') +  # Cria subplots separados para cada tipo de corte (cut)
    scale_y_continuous(labels=lambda l: [f"${x:,.0f}" for x in l]) +  # Formata o eixo Y como valores monetários
    labs(
        title='Relação entre Peso (Carat) e Preço (Price) por Tipo de Corte',  # Título do gráfico
        x='Peso (Carat)',  # Label do eixo X
        y='Preço (USD)'    # Label do eixo Y
    ) +
    theme_minimal() +  # Aplica tema minimalista
    theme(
        plot_title=element_text(size=14, weight='bold'),  # Tamanho e peso da fonte do título
        axis_title=element_text(size=12)                 # Tamanho da fonte dos eixos
    )
)

# Salva o gráfico como arquivo PNG
plot2.save("plot2.png", width=12, height=8, dpi=300)  # Pode-se adicionar width, height e dpi para controlar o tamanho e resolução

```

##Resposta escrita da questao 3 : #Questao 3
#O gráfico mostra uma clara associação positiva entre o peso (carat) e o preço (price) dos diamantes: conforme o peso aumenta, o preço cresce de maneira acentuada, indicando uma relação não linear. Além disso, observa-se que a qualidade do corte influencia o preço — diamantes com cortes de melhor qualidade, como Ideal e Premium, tendem a ter preços mais elevados para o mesmo peso, enquanto cortes inferiores, como Fair e Good, concentram-se em faixas de preço mais baixas. Para garantir um gráfico de boa qualidade, foram aplicadas medidas como o uso de transparência nos pontos (alpha) para evitar sobreposição, rótulos claros e tema limpo, destacando a tendência principal sem distrações visuais. Assim, conclui-se que o peso é um forte determinante do preço, mas a qualidade do corte também exerce influência relevante.

```{r}
knitr::include_graphics("plot2.png", dpi = 300, auto_pdf = TRUE)

```

```{python}
# Questão 4: Cria o terceiro gráfico
plot3 = (
    ggplot(diamonds) +  # Define o dataset diamonds para o gráfico
    aes(x='carat', y='price', color='cut') +  # Define variáveis do gráfico: x, y e cor por corte
    geom_point(alpha=0.3, size=1) +  # Adiciona pontos com transparência mais baixa e tamanho menor
    facet_grid('color ~ clarity') +  # Cria uma grade de facetas: linhas por cor, colunas por clareza
    scale_y_continuous(labels=lambda l: [f"${x:,.0f}" for x in l]) +  # Formata o eixo Y como valores monetários
    labs(
        title='Relação entre Preço (Price) e Peso (Carat) dos Diamantes',  # Título do gráfico
        subtitle='Facetas mostram combinações de cor (linhas) e clareza (colunas)',  # Subtítulo explicativo
        x='Peso (Carat)',  # Label do eixo X
        y='Preço (USD)',  # Label do eixo Y
        color='Qualidade do Corte'  # Label da legenda de cores
    ) +
    theme_minimal() +  # Aplica tema minimalista
    theme(
        plot_title=element_text(size=14, weight='bold'),   # Configura o tamanho e peso da fonte do título
        plot_subtitle=element_text(size=11),              # Configura o tamanho da fonte do subtítulo
        axis_text_x=element_text(size=7),                 # Tamanho do texto do eixo X
        axis_text_y=element_text(size=7),                 # Tamanho do texto do eixo Y
        strip_text=element_text(size=7),                  # Tamanho do texto das facetas
        legend_position='right'                            # Posição da legenda
    )
)

# Salva o gráfico como arquivo PNG
plot3.save("plot3.png", width=16, height=10, dpi=300)  # Pode-se adicionar width, height e dpi para controlar tamanho e resolução

```

```{r}
knitr::include_graphics("plot3.png", dpi = 300, auto_pdf = TRUE)
```
##Resposta escrita da questao 4: A visualização mostra que a relação entre peso (carat) e preço (price) dos diamantes continua sendo positiva em todas as combinações de corte, cor e clareza: diamantes mais pesados custam mais caro. Entretanto, a intensidade da relação varia conforme as características de qualidade. Diamantes com cortes superiores (como Ideal e Premium), cores mais puras (como D e E) e clareza elevada (como IF e VVS1) apresentam preços muito mais altos, mesmo para pesos semelhantes. Já diamantes com cortes simples, cores mais amareladas (como J) ou clareza inferior exibem preços menores e maior dispersão. Portanto, embora o peso seja o principal determinante do preço, as variáveis de qualidade modificam fortemente o padrão dessa relação, revelando um efeito combinado entre peso, cor, corte e clareza.

```{r}
# Captura o horário atual
horario_geracao <- Sys.time()

# Mostrar no console
horario_geracao


```

