I have the following codes
var <- c("var1-very long text", "b", "very long text", "var2", "bb", "bla", "blah", "var3", "bbb", "bbbb")
y <- c(NA, 1, 2, NA, 1, 3, 2, NA, 3, 2)
lcl <- y - 0.5
ucl <- y + 0.5
df <- data.frame(var[10:1], y[10:1], lcl[10:1], ucl[10:1])
df$var <- factor(df$var, levels = unique(df$var))
library(ggplot2)
library(ggtext)
bold_vars <- c("var1-very long text", "var2", "var3")
p <- ggplot(data=df, aes(x=var, y=y, ymin=lcl, ymax=ucl)) +
geom_pointrange() +
geom_hline(yintercept=1, lty=2) +
coord_flip() +
ylab("Blah") +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line = element_line(colour = "black"),
axis.title.y=element_blank(),
axis.text.y = element_text(hjust=c(1, 1, 0, 1, 1, 1, 0, 1, 1, 0))) +
scale_x_discrete(labels = c("var1-very long text" = expression(bold("var1-very long text")), "var2" = expression(bold("var2")), "var3" = expression(bold("var3"))))
print(p)
I want to keep the left-aligned and the right-aligned labels for the Y axis, but there is a big gap between them. How can I reduce this gap?
One option to get rid of the gap would be to switch to
ggtext::element_markdownwhere we have to set the alignment usinghalign=and importantly setalign_widths = TRUE: