Isto é baseado na minha postagem anterior em Adicionando formas perto do texto no ggplot
Com base na resposta aceita de @Tim G
library(ggplot2)
library(ggalt)
library(ggpp)
library(grid)
df <- data.frame(trt=LETTERS[1:5], l=c(20, 40, 10, 30, 50), r=c(70, 50, 30, 60, 80))
ggplot(df, aes(y = trt, x = l, xend = r)) +
geom_dumbbell(size = 3, color = "#e3e2e1",
colour_x = "#5b8124", colour_xend = "#bad744") +
geom_text_npc(aes(npcx = 'center', npcy = 'bottom'), label = expression('No. of'~italic('AA')~'isolates with corresponding types'), parse = TRUE) +
annotation_custom(
grob = rectGrob(
x = unit(0.5, "npc"), y = unit(0.04, "npc"),
width = unit(0.4, "npc"), height = unit(0.011, "npc"),
gp = gpar(fill = "gray60", col = NA)
)
)
Gostaria de saber se é possível empurrar a expressão gerada por geom_text_npc()
(junto com o sublinhado criado) mais abaixo, um pouco acima da borda inferior do gráfico, porém sem modificar o y-axis
. Tentei passar nudge_y = -1
, geom_text_npc()
mas não funcionou.
Obrigado pelo seu tempo e atenção.
Em vez de usar um
geom_text_npc
e um,annotation_custom
sugiro adicionar o texto e o segmento usando umannotation_custom
. Além disso, sugiro definir a altura em unidades absolutas, por exemplo, eu uso"pt"
, que permite definir o preenchimento também em unidades absolutas e não requer ajustes nasnpc
unidades:Você pode fornecer
npcy
um número exato em seugeom_text_npc(aes(npcx = 'center', npcy = 0.02)
eannotation_custom
ajustáy = unit(0.04, "npc")
-loy = unit(0.01, "npc")
.Conforme apontado corretamente por @ Edward , se você não quiser o aviso, passe um argumento de dados contendo
geom_text_npc()
apenas 1 linha (já que você tem apenas um rótulo), o que é basicamente uma anotação, já que o rótulo de texto não está conectado aos seus dados do dumbell.Editar Embora isso funcione, a resposta de Stefan fornece uma abordagem mais limpa e fácil de ajustar, e eu a recomendaria.