Estou usando o coord_radial
do ggplot2, mas não consigo fazer os limites do eixo corretos. A estética x (neste caso theta) é um fator e y (r) é um número. Quero que o primeiro nível do fator esteja exatamente em 12 (norte) e os outros níveis sejam distribuídos uniformemente. No exemplo abaixo, a lacuna entre o primeiro e o último nível (A e D) é maior do que as outras lacunas. Entre outras coisas, tentei usar scale_x_discrete
e expand
. Abaixo está um exemplo mínimo, mas meu caso real tem 15 níveis.
library(dplyr)
library(ggplot2)
tibble(lab = c("A", "B", "C", "D"),
val = rexp(4)) %>%
ggplot(aes(lab, val, group = 1)) +
geom_line() +
coord_radial(r.axis.inside = TRUE)
Se você quiser uma lacuna entre o primeiro e o último nível, então você pode adicionar
scale_x_discrete(expand = expansion(mult = xxx)))
para ajustar a lacuna entre os dados e os eixos. Os padrões são expandir a escala em 5% de cada lado para variáveis contínuas, e em 0,6 unidades de cada lado para variáveis discretas (veja a página de ajuda parascale_x_discrete
).Não está claro para mim o quanto expandir (depende muito de quantas categorias discretas você tem), mas com um pouco de tentativa e erro, você pode encontrar o gráfico mais bonito.
Defina expandir o último valor como 1, o que significa adicionar 1 espaço completo após o último valor "D".
Teste : Tente executar o código sem
coord_radial
para ver o que a expansão está fazendo.As diferentes lacunas entre os níveis são causadas pelo
expand
default paraTRUE
, emcoord_radial()
. Então, ao definirexpand = FALSE
, você obtém lacunas iguais:O problema agora é que o primeiro e o último nível estão no mesmo lugar. Minha solução não tão elegante para isso é adicionar um extra
lab
nos dados, comNA
como um valor, e então definir obreaks
onscale_x_discrete()
para que ele não seja plotado.