Rótulo de dados sobrepondo entre si

Boa noite !

Desejo manter os rótulos de dados organizados de forma que não se sobreponham entre si.

A ideia é mantê-los acima do geom_point ou abaixo… dependendo da posição da linha.

Como posso resolver esse problema?

Segue o comando simplificado e uma figura como exemplo do problema.

dt <- data.frame(periodo = c("JUN", "JUL","AGO","SET","OUT","NOV","DEZ"), diam = c(2.76,2.75,2.55,2.81,2.1,2.2,2.34,2.89,2.96,2.77,2.88,2.99,2.10,2.11)) dt$Variedade <- rep(c("A", "B"), each = nrow(dt)/2) dt$periodo <- factor(dt$periodo, levels = c("JUN", "JUL","AGO","SET","OUT","NOV","DEZ")) ggplot(dt, aes(x = periodo, y = diam, group = Variedade)) + geom_point() + geom_line()+ geom_label(aes(label = diam))+ scale_y_continuous(breaks = c(2,4), limits = c(1,5))

Sem título

Olá Patrick!

Você já experimentou o pacote ggrepel? Repulsive textual annotations. — geom_label_repel • ggrepel

exemplo com seus dados:

dt <- data.frame(periodo = c("JUN", "JUL","AGO","SET","OUT","NOV","DEZ"),
                 diam = c(2.76,2.75,2.55,2.81,2.1,2.2,2.34,2.89,2.96,2.77,2.88,2.99,2.10,2.11)) 

dt$Variedade <- rep(c("A", "B"), each = nrow(dt)/2) 

dt$periodo <- factor(dt$periodo, 
                     levels = c("JUN", "JUL","AGO","SET","OUT","NOV","DEZ")) 


library(ggrepel)
ggplot(dt, aes(x = periodo, y = diam, group = Variedade, color = Variedade), show.legend = FALSE ) +
  geom_point() +
  geom_line() +
  geom_label_repel(aes(label = diam)) + 
  scale_y_continuous(breaks = c(2, 4), limits = c(1, 5))

2 curtidas

@beatrizmilz, muito obrigado!
Não conhecia o pacote… vou interagir com ele.

De nada!

Eu basicamente carreguei o pacote ggrepel e substituí o geom_label() por geom_label_repel() ! Mas na documentação apresentam mais possibilidades com os argumentos.

1 curtida