Gráfico de Barras

Para hacer un gráfico de Pie con ggplot es necesario efectuar un gráfico de barras, con todas las barras apiladas, después de hacer este gráfico se utiliza la transformación circular coord_polar(theta=“y”) para transformar los valores de las alturas en ángulos. Para este ejemplo necesitaras tener cargada la librería ggplot2 y scales.

library(ggplot2)
library(scales)
#Lo primero es tener el  conjunto de datos con categorias y valores 
# los valores  son porcentajes y deben sumar 100
df<-data.frame(categorias=c("cat1","cat2","cat3","cat4"),
               porcentaje=c(25,20,15,40))
# despúes de esto  ya podemos  hacer nuestro gráfico de barras
ggplot(df,mapping = aes(x="",y=porcentaje, fill=categorias))+
  geom_bar(stat = "identity",color="white")

Opciones importantes a tener en cuenta

Adentro de mapping

  1. X="" : Especifica al programa que las barras van apiladas
  2. y=porcentaje: Le decimos a R que la altura de las barras esta dada por la variable “y”.
  3. fill=porcentaje: esta opción es muy importante porque de lo contrario no se observa diferencia en las barras, ya que todas se pintarían del mismo color. fill=porcentaje hace que cada barra se coloree de un color especificado por la variable porcentaje y por paleta de colores que este definida, la cual podemos cambiar.

Afuera de mapping y adentro de geom_bar()

  1. stat=“identity”: con esto le decimos al programa que no haga un conteo de alguna variable puesto que ya le indicamos al programa las alturas de las barras con y=“porcentaje”
  2. color=“white” con esto agregamos un aspecto estético ya que de esta manera los bordes son blancos y se diferencian las barras.

Transformado el gráfico de barras al de pie

para hacer la transformación usamos coord_polar(theta=“y”) con la “y” le indicamos al programa que lo que queremos cambiar en la geometría son las alturas de las barras.

library(ggplot2)
df
##   categorias porcentaje
## 1       cat1         25
## 2       cat2         20
## 3       cat3         15
## 4       cat4         40
ggplot(df,aes(x="",y=porcentaje, fill=categorias))+
  geom_bar(stat = "identity",color="white")+
  coord_polar(theta="y")

Agregando los valores de los porcentajes a las gráficas

Para agregar los valores como texto utilizamos geom_text(), para hacer esto es es necesario tener el texto que queremos agregar (o sea los porcentajes).

Se hace geom_text(aes(labels=“nuestro texto”),position=postion_stack(vjust=0.5))

library(ggplot2)
ggplot(df,aes(x="",y=porcentaje, fill=categorias))+
  geom_bar(stat = "identity",
           color="white")+
    geom_text(aes(label=porcentaje),
              position=position_stack(vjust=0.5))

el parámetro vjust=0.5 hace que los valores se coloquen al 50% de las barras, o sea en medio de cada barra.

Juntando el gráfico de pie con texto

para hacer esto hacemos el gggplot()+geom_bar()+geom_text(), agregando los datos, las estéticas y todos los parametros.

ggplot(df,aes(x="",y=porcentaje, fill=categorias))+
  geom_bar(stat = "identity",
           color="white")+
    geom_text(aes(label=porcentaje),
              position=position_stack(vjust=0.5),color="white",size=6)+
  coord_polar(theta = "y")

Personalizando nuestro Gráfico

  1. Cambiamos el color con scale_fill_manual(), colocamos en un vector nuestros colores.
  2. Agregamos el simbolo de porcentaje con el comando percent( de la libreria scales)
  3. Agregamos título y cambimos tema.
ggplot(df,aes(x="",y=porcentaje, fill=categorias))+
  geom_bar(stat = "identity",
           color="white")+
    geom_text(aes(label=percent(porcentaje/100)),
              position=position_stack(vjust=0.5),color="white",size=6)+
  coord_polar(theta = "y")+
  scale_fill_manual(values=c("salmon","steelblue","orange","gray"))+
    theme_void()+
    labs(title="Gráfico de Pie")

Gráfico de dona

Para hacer el gráfico de dona establecemos x=2 y xlim(0.5,2.5) de esta forma al rotar la barra se forma la dona, esto pues la rotación se hace respecto al origen.

ggplot(df,aes(x=2,y=porcentaje, fill=categorias))+
  geom_bar(stat = "identity",
           color="white")+
    geom_text(aes(label=percent(porcentaje/100)),
              position=position_stack(vjust=0.5),color="white",size=6)+
  coord_polar(theta = "y")+
  scale_fill_manual(values=c("salmon","steelblue","orange","gray"))+
    theme_void()+
    labs(title="Gráfico de Dona")+
  xlim(0.5,2.5)