Gráficos de barras circulares y personalización en R

En este artículo, vamos a ver cómo crear diagramas de barras circulares y personalización en el lenguaje de programación R. 

Un gráfico de barras circular es similar a un gráfico de barras, pero en lugar de coordenadas cartesianas, utiliza coordenadas polares. Una gráfica de barras circular es aquella en la que las barras se presentan en un círculo en lugar de una línea. Este artículo le mostrará cómo crear dichos gráficos usando R y ggplot2. Contiene código reproducible y explica cómo usar el método coord_polar().

Definir los datos

Para usar el conjunto de datos en el diagrama de barras, necesitamos crear un conjunto de datos, así que aquí lo crearemos.

R

# Libraries
library(tidyverse) # help you to prepare the data
library(ggplot2) # help you to prepare the plots
 
# prepare dataset
data = data.frame(
  # add a parameter with a range list 1-100
  index = seq(1,100),
  # create labelled parameter
  label = paste( data ="Data ",
                    seq(1,100),
                    sep="= "),
  # random values in the range 1 - 100
  values = sample( seq(10,100), 100, replace = T)
)
 
# top five values of the dataframe
head(data)

Producción:

  index   label  values 
1     1 Data -1     28 
2     2 Data -2     46 
3     3 Data -3     54 
4     4 Data -4     25 
5     5 Data -5     43 
6     6 Data -6     26

Ejemplo 1: Gráfica de barras circular básica

coord_polar() métodos utilizados para crear gráficos en coordinadas específicas. 

Sintaxis:  coord_polar(theta = “x”, inicio = 0, dirección = 1, clip = “on”)

Parámetros: 

  • theta: Variable para mapear el ángulo a (x o y)
  • start : Desplazamiento del punto de partida desde las 12 en punto en radianes. La compensación se aplica en el sentido de las agujas del reloj o en el sentido contrario a las agujas del reloj según el valor de la dirección.
  • dirección : 1, en el sentido de las agujas del reloj; -1, en sentido antihorario
  • clip : ¿Debe recortarse el dibujo en la medida del panel de trazado? Una configuración de «encendido» (predeterminado) significa que sí, y una configuración de «apagado» significa que no. Para más detalles, consulte coord_cartesian().

R

# Make the plot
p <- ggplot(data, aes(x = as.factor(index), # x-axis factor label
                       
                      # y-axis numerical parameter
                      y = values)) +     
   
  # the bar height will represent
  # the actual value of the data
  geom_bar(stat = "identity",
           fill=alpha("green", 0.5)) + # define bar color
   
  # define size of inner circle
  # and the size of the bar
  ylim(-100,120) +
   
  # define the polar coordinate
  coord_polar(start = 0)
 
# plot
p

Producción:

Ejemplo 2: agregar etiquetas a los datos

Para agregar etiquetas y datos usará los métodos geom_text().

R

# Adding labels to the plot
 
data_with_labels = data
 
# number of labels required
number_of_label <- nrow(data_with_labels)
# find the angle of rotation of the label
angle <-  90 - 360 * (data_with_labels$index - 0.5) /number_of_label    
 
# check the label alignment - right or left
data_with_labels$hjust<-ifelse( angle < -90, 1, 0)
# check the label angle
data_with_labels$angle<-ifelse(angle < -90,
                               angle + 180, angle)
 
 
 
# Make the plot
# x-axis factor label
p <- ggplot(data, aes(x = as.factor(index),
                       
                      # y-axis numerical parameter
                      y = values)) +     
   
  # the bar height will represent
  # the actual value of the data
  geom_bar(stat = "identity",
            
           # define bar color
           fill=alpha("green", 0.5)) +
   
  # define size of inner circle
  # and the size of the bar
  ylim(-100,120) +
   
  # define the polar coordinate
  coord_polar(start = 0) +
 
  # add labels
  geom_text(data = data_with_labels,
            aes(x = index, y = values+10,
                 
                # label alignment
                label = label, hjust=hjust),
            color = "black", fontface="bold",
            alpha = 0.6, size = 2.5,
            angle = data_with_labels$angle,
            inherit.aes = FALSE )
 
p

Producción:

Publicación traducida automáticamente

Artículo escrito por Mohit Gupta_OMG 🙂 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 *