Я пытаюсь создать горизонтальную гистограмму с метками категории с помощью ggplot.позиционирующие метки на geom_bar
Я смог создать сюжет без суеты и наложить ярлыки, однако у меня возникли проблемы с форматированием. В конечном счете, я бы хотел, чтобы мой ярлык находился в баре, если он подходит, иначе как раз за пределами бара, не обрезая метку.
Следующие, что я пробовал до сих пор.
данные
dt1 <- data.table(x=c("a","b","c","d","e"), y=c(43,52,296,102,157), y2=c(50,10,100,45,80))
Диаграмма 1
ggplot() + geom_bar(data=dt1, aes(x=x, y=y), stat="identity",fill="red") + coord_flip() +
geom_text(data=dt1, aes(x=x, y=y, label=paste0("$",y," from ",y2," records")),hjust=0)
Как вы можете видеть ниже метки оборванны.
Диаграмма 2
Затем я наткнулся на эту question, который был полезным и заставил меня понять, что я установить положение метки на основе моей переменной у, так что я жёстко его сейчас и использовать hjust раздуть это от оси.
ggplot() + geom_bar(data=dt1, aes(x=x, y=y), stat="identity",fill="red") + coord_flip() +
geom_text(data=dt1, aes(x=x, y=0, label=paste0("$",y," from ",y2," records")),hjust=-0.1)
Но вы можете увидеть ниже, что только 2 из лейблов вписываться в баре, так что я предпочел бы, чтобы другие были помещены в конце концов, на внешней стороне панели, как в таблице 1.
Есть ли программный способ получить лучшее из обоих миров из графика 1 и диаграммы 2?
Это помогает, однако он не решает основной вопрос, касающийся иметь самое лучшее из обоих миров. Я также после программного способа делать что-то, поскольку я не всегда знаю, какое наибольшее значение у будет, и я бы предпочел не ограничивать жесткие ограничения кода. – Dan