¿Cómo dibujar barras apiladas en ggplot2 que muestran porcentajes en R?

En este artículo vamos a ver cómo dibujar barras apiladas en ggplot2 que muestren porcentajes en el lenguaje de programación R.

El paquete plyr en R se usa para dividir los datos, realizar operaciones con ellos y luego volver a unirlos. Se utiliza para realizar la manipulación de datos. Este paquete se puede descargar e instalar en el espacio de trabajo usando el siguiente comando: 

install.packages("plyr")

El método ddply en R se usa para combinar los resultados en un solo marco de datos después de la aplicación de una función en cada uno de los subconjuntos del marco de datos. 

Sintaxis: ddply(.data, .variables, .fun = NULL)

Argumentos: 

  • datos: el marco de datos que se utilizará
  • variables: variables para dividir el marco de datos por
  • divertido: la función que se aplicará en el marco de datos

La función que se aplicará aquí puede ser la función de transformación, que se puede usar para agregar, eliminar o mutar columnas en el marco de datos. Se puede usar para agregar más columnas en el marco de datos. La columna de porcentaje se puede agregar al marco de datos calculando la fracción de cada componente en el marco de datos. 

La columna de porcentaje se puede usar para agregar etiquetas usando el signo «%». La columna se construye utilizando el método paste0() que se utiliza para concatenar strings combinando el porcentaje con el signo «%» correspondiente. 

paste0(str1, str2)

El paquete ggplot2 se utiliza para la visualización de datos y la representación de los gráficos. Este paquete se puede descargar e instalar en el espacio de trabajo usando el siguiente comando:

install.packages("ggplot2")

El método ggplot en este paquete se usa para construir varios tipos de diagramas, como diagramas de dispersión, diagramas de caja, etc. Los diagramas toman como entrada el marco de datos que se usará y también brindan mapeos estéticos usando las coordenadas x e y. Se pueden agregar otros argumentos usando el color especificado por la columna de agrupación. 

Sintaxis: ggplot (datos, mapeo = aes(x=, y=, relleno =))

Argumentos: 

  • datos: el marco de datos que se utilizará
  • mapeo: mapeo estético provisto por el método aes()

El método geom_bar() de este paquete se usa para hacer que la altura de la barra sea proporcional al número de casos en cada grupo. Tiene la siguiente sintaxis: 

Sintaxis: geom_bar(posición, estadística = “identidad”)

Argumentos: 

  • posición: ajuste de posición

El método geom_text se puede usar para agregar texto a las barras apiladas y apilarlas una encima de la otra. La etiqueta se asigna como la string de etiquetas de porcentaje calculada. La etiqueta se puede asignar usando el argumento de la etiqueta y su posición correspondiente. Se puede personalizar aún más utilizando el parámetro de tamaño. 

Sintaxis: geom_text(mapeo = NULL, posición, tamaño)

Argumentos: 

  • mapeo: Mapeos estéticos
  • position: el ajuste de posición que se usará para los puntos superpuestos en esta capa
  • tamaño: el tamaño del texto añadido

Ejemplo:

R

# importing the required library
library(plyr)
library(ggplot2)
  
# creating the data frame
data_frame < - data.frame(stringsAsFactors=FALSE,
                          col1=c(rep(5: 7, each=4)),
                          col2=c(rep(1: 4, each=3)),
                          col3=c(1: 12))
# printing the data frame
print("original dataframe")
print(data_frame)
  
# adding the
data_frame = ddply(data_frame, .(col2), transform,
                   percentage=col1/sum(col1) * 100)
  
# adding the percentage label
data_frame$prcntlabel = paste0(sprintf("%.0f",
                                       data_frame$percentage),
                               "%")
  
# printing the modified data frame
print("converted dataframe")
print(data_frame)
  
# adding graph of plotting data
ggplot(data_frame, aes(x=factor(col2), y=col3, fill=col1)) +
geom_bar(position=position_stack(), stat="identity") +
geom_text(aes(label=prcntlabel), position=position_stack(vjust=0.5), size=2) +
coord_flip()

Producción

[1] "original dataframe"
  col1 col2 col3
1     5    1    1
2     5    1    2
3     5    1    3
4     5    2    4
5     6    2    5
6     6    2    6
7     6    3    7
8     6    3    8
9     7    3    9
10    7    4   10
11    7    4   11
12    7    4   12
[1] "converted dataframe"
   col1 col2 col3 percentage  prcntlabel
1     5    1    1   33.33333        33%
2     5    1    2   33.33333        33%
3     5    1    3   33.33333        33%
4     5    2    4   29.41176        29%
5     6    2    5   35.29412        35%
6     6    2    6   35.29412        35%
7     6    3    7   31.57895        32%
8     6    3    8   31.57895        32%
9     7    3    9   36.84211        37%
10    7    4   10   33.33333        33%
11    7    4   11   33.33333        33%
12    7    4   12   33.33333        33%

Publicación traducida automáticamente

Artículo escrito por mallikagupta90 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *