gpt4 book ai didi

r - 具有刻面比例和动态 geom_text 位置的 ggplot

转载 作者:行者123 更新时间:2023-12-05 08:55:25 26 4
gpt4 key购买 nike

我正在使用 gglot 和 facet_wrap 来绘制一些数据。不同方面的维度非常不同(0.2 与 2000)。

我绘制 geom_bar 并在条上方添加具有相同值的 geom_text。现在有一个问题。 geom_text 值用于标题下的“大”栏。

我看到了两种可能的解决方案,但我都无法实现。

  1. 切换大条形图的 geom_text 位置以在内部绘制。这可以用 aes 中的 vjust 来完成。但对于每个方面,切换点必须不同。

  2. 我想将 y 轴缩放到 110%,以便为文本留出空间。但我不想手动把它放到我的程序中,因为情节是自动完成的。

enter image description here我使用的代码

library(ggplot2)
testdata <- data.frame(a = c(0.1,0.2,0.3, 4,5,6, 7000,8000,9000),
b = c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c' ),
c = c('aa', 'bb', 'cc', 'aa', 'bb', 'cc', 'aa', 'bb', 'cc'))

ggplot(testdata, aes(x = c, y = a)) +
geom_bar(stat = 'identity') +
geom_text(aes(label = a), vjust = -1) +
facet_wrap(~b, ncol=1, scales = 'free_y')

最佳答案

这是给你的解决方案:

*(如果您想了解更多详情,请查看此 stackoverflow question and answer)

library(data.table)
testdata <- data.table(testdata)
testdata[,y_min:= a*0.5, by = c]
testdata[,y_max:= a*1.5, by = c]

ggplot(testdata, aes(x = c, y = a)) +
geom_bar(stat = 'identity') +
geom_text(aes(label = a), vjust = -1) +
facet_wrap(~b, ncol=1, scales = 'free_y') +
geom_blank(aes(y = y_min)) +
geom_blank(aes(y = y_max))

enter image description here

您首先需要为每个组创建y_miny_max 变量。并通过 geom_blank()“绘制”它们。

关于r - 具有刻面比例和动态 geom_text 位置的 ggplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45976776/

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