Jornada de Iniciación Científica - Centro Regional de Chiriquí


Tema 6: Gráficos en R - Circulares, Pastel o Pie


Los gráficos circulares ayudan a mostrar proporciones y porcentajes entre categorías al dividir un círculo en segmentos proporcionales. Cada longitud de arco representa una proporción de cada categoría, mientras que el círculo completo representa el 100%.

Los gráficos circulares son ideales para dar al lector una idea rápida de la distribución proporcional de los datos. Sin embargo tiene varias desventajas:

#cargar librerias ggplot
#-----------------------------------------
library(ggplot2)

# leer datos de SchoolsMiamiDade
SchoolsMiamiDade<- read.csv("SchoolsMiamiDade.csv")

Significado de las variables del dataframe SchoolsMiamiDade

SchoolName : Nombre de la Escuela
BoardDistrict : Núemero de Dsitrito donde esta la escuela
SchoolGrade : Grado al que se le aplico la prueba
Reading2012 : puntaje de 1 a 100 en Lectura 2012
Reading2013: puntaje de 1 a 100 en Lectura 2013
ReadingDifference: diferencia entre 2013 y 2012 en lectura
Math2012: puntaje de 1 a 100 en Matemática 2012
Math2013: puntaje de 1 a 100 en Matemática 2013
MathDifference: diferencia entre 2013 y 2012 en matemática

Crear gráfico de Pastel en R

El uso del Gráfico de Pastel puede ser un problema ya que las personas somos bastante malos para leer ángulos. El comentario no está relacionado con noutilizarlo, sino que en GGPLOT realizar un gráfico de pastel, no es tan fácil porque no hay una geometria de gráfico de pastel.
Los pasos para hacer un gráfico de pastel son los siguientes:

1. Debemos crear una tabla de contingencia de los datos de una variable categorica BoardDistrict

tabla <- table(SchoolsMiamiDade$BoardDistrict)

2. Transformar tabla en un dataframe

tablaDistrito <- data.frame(tabla)
head(tablaDistrito,5)
# se generan dos variables una cuantitativa y una cuantitativa

3. Creamos un gráfico de barra donde los valores son:

x="" genera una sola columna
y = Freq valores cuantitativo de tablaDistrito
fill = Var1 valores cuantitativos de tablaDistrito

ggplot(tablaDistrito, aes(x="", y= Freq, fill=Var1)) +
    geom_bar(stat = "identity")

4. Añadimos al gráfico las coordenadas polares, iniciando en el angulo 0

ggplot(tablaDistrito, aes(x="", y= Freq, fill=Var1)) +
    geom_bar(stat = "identity")+
    coord_polar("y", start=0) 

5. Añadimos el titulo del gráfico y los datos al grafico

Con la funcion “theme_void()” eliminamos los datos de coordenadas polares (opcional).

ggplot(tablaDistrito, aes(x="", y= Freq, fill=Var1)) +
    geom_bar(stat = "identity")+
    coord_polar("y", start=0) +
   geom_text(aes(label = Freq),position = position_stack(vjust = 0.5)) +
    labs(title = "Numero de escuelas por distrito - USA 2012", fill = NULL, x = NULL, y= NULL) +
  theme_void()

Gráfico de pastel con porcentaje

Con la funcion “theme_void()” eliminamos los datos de coordenadas polares (opcional).

#calcular porcentajes
porcentaje <- round((tablaDistrito$Freq /460) * 100,1)

ggplot(tablaDistrito, aes(x="", y= Freq, fill=Var1)) +
    geom_bar(stat = "identity")+
    coord_polar("y", start=0) +
   geom_text(aes(label = paste0(porcentaje, "%")),position = position_stack(vjust = 0.5)) +
    labs(title = "Numero de escuelas por distrito - USA 2012", fill = NULL, x = NULL, y= NULL) +
  theme_void()

Comparación de Gráfico de pastel y Grafico de barras

Se utilizan los mismos datos con la variable BoardDistrict. En la comparación de los graficos deseamos responder la siguiente pregunta.
¿Cuál es el Distrito con la mayor cantidad de escuelas?

#grafico de pastel
ggplot(tablaDistrito, aes(x="", y= Freq, fill=Var1)) +
    geom_bar(stat = "identity")+
    coord_polar("y", start=0) +
    theme_void()

  #grafico de barras
  ggplot(SchoolsMiamiDade, aes(BoardDistrict))+
    geom_bar(aes(fill=BoardDistrict))


Con el gráfico de pastel es muy dificil responder la pregunta, sin tener los datos

Crear un gráfico de pastel con la función pie() de R basico

Existe una forma más fácil de crear un gráfico de pastel, utilizando la función pie().

#utilizamos los datos de tabla
  
#creamos un vetor para las leyendas tipo caracter
leyenda <- as.character(tablaDistrito$Var1)

#vcreacion del grafico
pie(tablaDistrito$Freq, tablaDistrito$Freq, main="Numero de personas por Clase el Titanic", col = rainbow(length(tabla)))

#crear leyenda
legend("topright", leyenda, cex = 0.8,
         fill = rainbow(length(leyenda)))

PRACTICA 1

Crear un gráfico de pastel con la variable SchoolGrade sin mostrar los datos en el gráfico pero si el título y la leyenda.
¿Qué interpreta?

PRACTICA 2

Cree un gráfico de barra con los datos de la variable SchoolGrade. ¿Qué interpreta?
¿Es la misma interpretación del gráfico de pastel, porqué?