Como criar um gráfico lollipop em r


Semelhante a um gráfico de barras, um gráfico pirulito é útil para comparar valores quantitativos de uma variável categórica. Em vez de usar barras, um gráfico pirulito usa linhas com círculos no final para representar valores quantitativos.

Um gráfico de pirulito é uma ótima maneira de comparar várias categorias, minimizando a quantidade de cores no gráfico e concentrando a atenção do leitor nos valores reais do gráfico, em oposição às linhas ou outros gráficos do gráfico. Muitas pessoas também consideram a placa de pirulito esteticamente agradável.

Neste tutorial, seguiremos as etapas necessárias para criar o seguinte gráfico de pirulito:

Exemplo: gráfico Lollipop em R

Para este exemplo, usaremos o conjunto de dados R integrado mtcars :

 #view first six rows of mtcars
head(mtcars)

Um gráfico básico de pirulito

O código a seguir ilustra como   para criar um gráfico pirulito para comparar o mpg (milhas por galão) de cada um dos 32 carros no conjunto de dados.

Os nomes dos carros são definidos nos nomes das linhas do conjunto de dados, portanto, primeiro criamos uma nova coluna no conjunto de dados que contém esses nomes de linhas.

A seguir, carregamos a biblioteca ggplot2 , que usaremos para criar o gráfico pirulito.

Com ggplot2, usamos geom_segment para criar as linhas no gráfico. Definimos os valores inicial e final de x como 0 e mpg , respectivamente. Definimos os valores inicial e final de y como char :

 #create new column for car names
mtcars$car <- row.names(mtcars)

#load ggplot2 library
library(ggplot2)

#create lollipop chart
ggplot(mtcars, aes(x = mpg, y = car)) +
        geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
        geom_point()

Adicionando rótulos

Também podemos adicionar rótulos ao gráfico usando os argumentos label e geom_text :

 ggplot(mtcars, aes(x = mpg, y = car, label = mpg )) +
        geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
        geom_point() +
        geom_text(nudge_x = 1.5)

Ou, em vez de colocar os rótulos no final de cada linha, poderíamos colocá-los dentro dos próprios círculos, aumentando os círculos e alterando a cor da fonte do rótulo para branco:

 ggplot(mtcars, aes(x = mpg, y = car, label = mpg)) +
        geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
        geom_point( size = 7 ) +
        geom_text( color = 'white', size = 2 )

Compare os valores com uma média

Também podemos usar um gráfico de pirulito para comparar valores com um número específico. Por exemplo, podemos encontrar o valor médio de mpg no conjunto de dados e então comparar o mpg de cada carro com a média.

O código a seguir usa a biblioteca dplyr para encontrar o valor médio de mpg e, em seguida, organizar os carros em ordem crescente de mpg :

 #load library dplyr
library(dplyr)

#find mean value of mpg and arrange cars in order by mpg descending
mtcars_new <- mtcars %>%
                arrange(mpg) %>%
                mutate(mean_mpg = mean(mpg),
                       flag = ifelse(mpg - mean_mpg > 0, TRUE, FALSE),
                       car = factor(car, levels = .$car))

#view first six rows of mtcars_new
head(mtcars_new)

Em seguida, o código a seguir cria o gráfico de pirulito definindo a cor do círculo como igual ao valor da bandeira (neste caso TRUE ou FALSE) e o valor inicial de x para cada carro como igual ao valor médio de mpg .

 ggplot(mtcars_new, aes(x = mpg, y = car, color = flag )) +
        geom_segment(aes( x = mean_mpg , y = car, xend = mpg, yend = car)) +
        geom_point()

Usando esse tipo de paleta de cores, podemos determinar facilmente quais carros têm mpg menor e maior do que a média do conjunto de dados.

Por padrão, R usa azul e vermelho como cores do gráfico. No entanto, podemos usar qualquer cor que quisermos usando o argumento scale_color_manual :

 ggplot(mtcars_new, aes(x = mpg, y = car, color = flag)) +
        geom_segment(aes(x = mean_mpg, y = car, xend = mpg, yend = car)) +
        geom_point() +
        scale_color_manual(values = c("purple", "blue"))

Alterar a estética do gráfico

Finalmente, podemos usar os amplos recursos do ggplot2 para modificar ainda mais a estética do gráfico e criar um produto final com aparência profissional:

 ggplot(mtcars_new, aes(x = mpg, y = car, color = flag)) +
        geom_segment(aes(x = mean_mpg, y = car, xend = mpg, yend = car), color = "grey") +
        geom_point() +
        annotate("text", x = 27, y = 20, label = "Above Average", color = "#00BFC4", size = 3, hjust = -0.1, vjust = .75) +
        annotate("text", x = 27, y = 17, label = "Below Average", color = "#F8766D", size = 3, hjust = -0.1, vjust = -.1) +
        geom_segment(aes(x = 26.5, xend = 26.5, y = 19, yend = 23),
                     arrow = arrow(length = unit(0.2,"cm")), color = "#00BFC4") +
        geom_segment(aes(x = 26.5, xend = 26.5, y = 18, yend = 14),
                     arrow = arrow(length = unit(0.2,"cm")), color = "#F8766D") +
        labs(title = "Miles per Gallon by Car") +
        theme_minimal() +
        theme(axis.title = element_blank(),
              panel.grid.minor = element_blank(),
              legend.position = "none",
              text = element_text(family = "Georgia"),
              axis.text.y = element_text(size = 8),
              plot.title = element_text(size = 20, margin = margin(b = 10), hjust = 0),
              plot.subtitle = element_text(size = 12, color = "darkslategrey", margin = margin(b = 25, l = -25)),
              plot.caption = element_text(size = 8, margin = margin(t = 10), color = "grey70", hjust = 0))

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *