我正在尝试使用 ggplot 创建一个带有类别标签的水平条形图。
我已经能够毫不费力地创建情节,并且可以贴上标签,但是我遇到了格式问题。最终,如果合适,我希望将我的标签放在条内,否则就在条外而不截断标签。
以下是我迄今为止尝试过的。
数据
dt1 <- data.table(x=c("a","b","c","d","e"), y=c(43,52,296,102,157), y2=c(50,10,100,45,80))
图一
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
然后我遇到了这个问题,这个问题很有帮助,让我意识到我正在根据我的 y 变量设置标签位置,所以我现在已经硬编码它并使用 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 中获得两全其美?