En este artículo, vamos a ver cómo crear un gráfico circular con etiquetas de porcentaje usando ggplot2 en el lenguaje de programación R.
Paquetes utilizados
El paquete dplyr en la programación R se puede usar para realizar manipulaciones de datos y estadísticas. El paquete se puede descargar e instalar usando el siguiente comando en R.
install.packages("dplyr")
El paquete ggplot2 en la programación R se usa para trazar gráficos para visualizar datos y representarlos usando varios tipos de gráficos. El paquete se usa como biblioteca después de ejecutar el siguiente comando.
install.packages("ggplot2")
El método ggplot en la programación R se usa para hacer visualizaciones de gráficos usando el marco de datos especificado. Se utiliza para instanciar un objeto ggplot. Se pueden crear asignaciones estéticas al objeto de trazado para determinar la relación entre los ejes x e y respectivamente. Se pueden agregar componentes adicionales al objeto ggplot creado.
Sintaxis: ggplot(datos = NULL, mapeo = aes(), relleno = )
Argumentos:
- data: conjunto de datos predeterminado para usar en la gráfica.
- mapeo: lista de mapeos estéticos para usar en la trama.
Se pueden agregar geomas a la trama usando varios métodos. El método geom_line() en la programación R se puede utilizar para agregar líneas gráficas en los diagramas realizados. Se agrega como un componente a la parcela existente. Las asignaciones estéticas también pueden contener atributos de color que se asignan de manera diferente en función de diferentes marcos de datos.
El método geom_bar() se usa para construir la altura de la barra proporcional al número de casos en cada grupo.
Sintaxis: geom_bar (ancho, estadística)
Argumentos:
ancho – Ancho de la barra
Luego se agrega el componente coord_polar() además de los geoms para asegurarnos de que estamos construyendo un gráfico de barras apiladas en coordenadas polares.
Sintaxis: coord_polar(theta = “x”, inicio = 0)
Argumentos:
theta – variable para mapear el ángulo a (x o y)
inicio: desplazamiento del punto de inicio desde las 12 en punto en radianes.
A esto le sigue la aplicación del método geom_text() que se utiliza para hacer anotaciones textuales.
geom_text(aes() , label, size)
A continuación se muestra la implementación:
R
# importing the required libraries library(dplyr) library(ggplot2) library(ggrepel) library(forcats) library(scales) # creating a data frame data_frame <- data.frame(col1 = letters[1:3], col2 = c(46,24,12)) print("Original DataFrame") print(data_frame) sum_of_obsrv <- 82 # computing the pie chart pie_chart <- ggplot(data_frame, aes(x="", y=col2, fill=col1)) + geom_bar(width = 1, stat = "identity") + coord_polar("y", start=0) + geom_text(aes(y = col2/2 + c(0, cumsum(col2)[-length(col2)]), label = percent(col2/sum_of_obsrv )), size=5) # printing the percentage print(pie_chart)
Producción
[1] "Original DataFrame" col1 col2 1 a 46 2 b 24 3 c 12
Para acomodar el índice dentro del gráfico par junto con los niveles, podemos realizar mutaciones en el propio marco de datos para evitar realizar los cálculos de la frecuencia acumulada y sus puntos medios correspondientes durante el trazado del gráfico. Este método es menos engorroso que el método anterior. En este enfoque, las tres propiedades de datos requeridas se agregan en forma de columnas al marco de datos, que son:
- frecuencia acumulada, calculada por el método cumsum() tomando como argumento el nombre de la columna.
- punto medio que se calcula como la mitad de la diferencia de la frecuencia acumulada con el valor de la columna.
- etiqueta que se utiliza para calcular el etiquetado en forma de anotaciones textuales.
A esto le sigue la aplicación del método theme_nothing que simplemente elimina todos los elementos temáticos en ggplot2.
R
# importing required libraries library(dplyr) library(ggplot2) library(ggmap) # creating a data frame data_frame <- data.frame(col1 = c(28,69,80,40), col2 = LETTERS[1:4]) %>% mutate(col2 = factor(col2, levels = LETTERS[1:4]), # computing the column values cf = cumsum(col1), mid = cf - col1 / 2, label = paste0(col2, " ", round(col1 / sum(col1) * 100, 1), "%")) # printing the data frame print("Original DataFrame") print(data_frame) # creating a plot ggplot(data_frame, aes(x = 1, weight = col1, fill =col2)) + geom_bar(width = 1) + coord_polar(theta = "y") + geom_text(aes(x = 1.3, y = mid, label = label)) + theme_nothing()
Producción
[1] "Original DataFrame" col1 col2 cf mid label 1 28 A 28 14.0 A 12.9% 2 69 B 97 62.5 B 31.8% 3 80 C 177 137.0 C 36.9% 4 40 D 217 197.0 D 18.4%
Publicación traducida automáticamente
Artículo escrito por codersgram9 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA