gpt4 book ai didi

r - 在条形图中使用 position_dodge(preserve ="single") 时,geom_text 未正确定位

转载 作者:行者123 更新时间:2023-12-03 17:32:10 25 4
gpt4 key购买 nike

使用下面的代码,刻面 bB 中的标签未正确定位。
问题似乎源于没有position_dodge(preserve="single")geom_text (正确的?)。我知道我可以“手动”添加一个空的虚拟单元格(在 facet bB 中填充 y=0),但我想知道是否有任何方法可以直接在 ggplot 中纠正它?

v1 <- LETTERS[1:2]
v2 <- letters[1:2]
v3 <- c("x","y")
g <- expand.grid(v1,v2,v3)
val=c(sample(10,8))
df<- data.frame(g,val)
df<- df[-8,]


df %>% ggplot() +
geom_bar(aes(x=Var2, y=val, fill=Var3, group=Var3),
stat="identity",
position=position_dodge(preserve="single"))+
geom_text(aes(x=Var2, y=val+1, label=val, group=Var3),
position=position_dodge(width=1))+
facet_grid(Var1~Var2, scale="free_x")

enter image description here

更新/答案:使用 position_dodge2 将条形与标签对齐(但是,条形居中且未与其他方面中的条形对齐)。
df %>% ggplot() +
geom_bar(aes(x=Var2, y=val, fill=Var3, group=Var3), stat="identity",
position=position_dodge2(preserve="single"))+
geom_text(aes(x=Var2, y=val+1, label=val, group=Var3),
position=position_dodge2(width=1))+
facet_grid(Var1~Var2, scale="free_x")

最佳答案

如果示例与您的实际用例相似,我建议使用 position_dodge 避免所有这些麻烦。 ,并简单地将不同的变量分配给 facet_grid 的 x 轴和列反而。您目前对两者都使用“Var2”。

ggplot(df, 
aes(x = Var3, y = val)) + # put Var3 here instead of Var2
geom_col(aes(fill = Var3)) + # dodge becomes unnecessary here
geom_text(aes(y = val + 1, label = val)) + # as above
facet_grid(Var1 ~ Var2) +

# optional, simulates the same appearance as original
labs(x = "Var2") +
theme(axis.text.x = element_blank(),
axis.ticks.x = element_blank())

plot

关于r - 在条形图中使用 position_dodge(preserve ="single") 时,geom_text 未正确定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51813898/

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