gpt4 book ai didi

r - geom_bar 上的定位标签

转载 作者:行者123 更新时间:2023-12-05 01:02:13 25 4
gpt4 key购买 nike

我正在尝试使用 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))

图表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)

正如您在下面看到的,标签被截断了。
Chart 1

图2

然后我遇到了这个 question这很有帮助,让我意识到我正在根据我的 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 的外侧。
chart 2

有没有一种编程方式可以让我从图表 1 和图表 2 中获得两全其美?

最佳答案

这是一种方法。这是一个有点冗长的方法,但您可以为 geom_text 子集您的数据.通过这种方式,您可以为每个条手动分配所需的位置。

ggplot() + 
geom_bar(data = dt1, aes(x=x, y=y), stat="identity",fill="red") +
coord_flip() +
geom_text(data = filter(dt1, x == "e" | x == "c"),
aes(x=x, y=0, label=paste0("$",y," from ",y2," records")),hjust = -0.1) +
geom_text(data = filter(dt1, x == "d"),
aes(x=x, y=0, label=paste0("$",y," from ",y2," records")),hjust = - 1.1) +
geom_text(data = filter(dt1, x == "b"),
aes(x=x, y=0, label=paste0("$",y," from ",y2," records")),hjust = - 0.6) +
geom_text(data = filter(dt1, x == "a"),
aes(x=x, y=0, label=paste0("$",y," from ",y2," records")),hjust = - 0.5)

enter image description here

关于r - geom_bar 上的定位标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26853926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com