# ==========================================
# 1. Gráfico de Barras
# ==========================================

# Dados com nomes quebrados em duas linhas
categorias <- c("Ciência\nde Dados",
                "Ciências\nde Computação",
                "Engenharia\nde Computação",
                "Estatística",
                "Estatística\ne Ciência de Dados",
                "Matemática",
                "Matemática Aplicada\ne Computação Científica",
                "Sistemas\nde Informação")

valores <- c(90, 522, 331, 6, 207, 153, 110, 274)

# Tabela
tabela_freq <- data.frame(Curso = categorias, Frequencia = valores)

# Gráfico de Barras
frequencias <- tabela_freq$Frequencia
names(frequencias) <- tabela_freq$Curso

par(mar=c(10, 4, 4, 2)) # Margem inferior ajustada para caber os nomes

barplot(height = frequencias,
        col = "lightblue",
        main = "Gráfico de Barras",
        names.arg = names(frequencias),
        las = 2,
        ylab = "Frequência",
        cex.names = 0.8)

# ==========================================
# 2. Gráfico de Pizza
# ==========================================

# Dados (sem quebra de linha para o gráfico de pizza)
categorias_pizza <- c("Ciência de Dados",
                      "Ciências de Computação",
                      "Engenharia de Computação",
                      "Estatística",
                      "Estatística e Ciência de Dados",
                      "Matemática",
                      "Matemática Aplicada e Computação Científica",
                      "Sistemas de Informação")

# Rótulos com porcentagens
total <- sum(valores)
porcentagens <- round(valores / total * 100, 1)
rotulos_pizza <- paste(categorias_pizza, "-", porcentagens, "%")

par(mar = c(8, 4, 4, 2)) # Margem inferior ajustada

pie(valores,
    labels = rotulos_pizza,
    col = rainbow(length(valores)),
    main = "Distribuição por Curso")

# ==========================================
# 3. Diagrama de Pareto (usando biblioteca base do R)
# ==========================================

# Tabela ordenada por frequência decrescente
df <- data.frame(Curso = categorias, Frequencia = valores)
df <- df[order(-df$Frequencia), ]
df$Porcentagem <- round(df$Frequencia / sum(df$Frequencia) * 100, 1)
df$Acumulada <- cumsum(df$Porcentagem)

par(mar = c(9, 4, 4, 4)) # Margem inferior + margem à direita

barplot(df$Frequencia,
        names.arg = df$Curso,
        col = "skyblue",
        las = 2,
        main = "Diagrama de Pareto",
        ylab = "Frequência",
        cex.names = 0.75,
        ylim = c(0, sum(df$Frequencia) + 5))

par(new = TRUE)
plot(1:nrow(df),
     df$Acumulada,
     type = "b",
     pch = 19, 
     col = "red", 
     axes = FALSE,
     xlab = "", 
     ylab = "", 
     ylim = c(0, 100))

axis(4, at = seq(0, 100, 10), col.axis = "red", col = "red")
mtext("Porcentagem Acumulada (%)", side = 4, line = 3, col = "red")

# ==========================================
# 4. Diagrama de Pareto (usando o pacote qcc)
# ==========================================

# Instale o pacote se não tiver: install.packages('qcc')
library(qcc) 
## Package 'qcc' version 2.7
## Type 'citation("qcc")' for citing this R package in publications.
# Organizando os dados para a função pareto.chart
valores_nomeados <- valores
names(valores_nomeados) <- categorias_pizza

par(mai = c(2, 0, 0, 0), xpd = TRUE) # Ajuste da margem

pareto.chart(valores_nomeados,
             ylab = "Quantidade de Alunos Matriculados",
             ylab2 = "Frequência Acumulada",
             col = heat.colors(length(valores_nomeados)),
             main = "Diagrama de Pareto - Quantidade de Alunos Matriculados por curso do ICMC",
             cumperc = seq(0, 100, by = 10))

##                                              
## Pareto chart analysis for valores_nomeados
##                                                  Frequency    Cum.Freq.
##   Ciências de Computação                       522.0000000  522.0000000
##   Engenharia de Computação                     331.0000000  853.0000000
##   Sistemas de Informação                       274.0000000 1127.0000000
##   Estatística e Ciência de Dados               207.0000000 1334.0000000
##   Matemática                                   153.0000000 1487.0000000
##   Matemática Aplicada e Computação Científica  110.0000000 1597.0000000
##   Ciência de Dados                              90.0000000 1687.0000000
##   Estatística                                    6.0000000 1693.0000000
##                                              
## Pareto chart analysis for valores_nomeados
##                                                 Percentage Cum.Percent.
##   Ciências de Computação                        30.8328411   30.8328411
##   Engenharia de Computação                      19.5510927   50.3839338
##   Sistemas de Informação                        16.1842882   66.5682221
##   Estatística e Ciência de Dados                12.2268163   78.7950384
##   Matemática                                     9.0372120   87.8322504
##   Matemática Aplicada e Computação Científica    6.4973420   94.3295924
##   Ciência de Dados                               5.3160071   99.6455995
##   Estatística                                    0.3544005  100.0000000