R 使用ggplot调整geom_文本和条形图之间的距离

R 使用ggplot调整geom_文本和条形图之间的距离,r,ggplot2,R,Ggplot2,我有一个显示相关值的图,我在每个条上用一个星表示一个显著的相关性。但是,我似乎不能增加星星和条之间的距离,因为条在绘图中是双向的(有些值是负数,有些值是正数)。我想知道如何增加文本的距离相同的数量,只是在不同的方向。 Nudge_x和Nudge_y只会更改绘图中一个方向上的所有点。此外,文本标签似乎不在每个条的中心 例如: df <- structure(list(ref2 = c("A", "B", "C", "D", "E"), estimate = c(-0.220522748118

我有一个显示相关值的图,我在每个条上用一个星表示一个显著的相关性。但是,我似乎不能增加星星和条之间的距离,因为条在绘图中是双向的(有些值是负数,有些值是正数)。我想知道如何增加文本的距离相同的数量,只是在不同的方向。
Nudge_x
Nudge_y
只会更改绘图中一个方向上的所有点。此外,文本标签似乎不在每个条的中心

例如:

df <- structure(list(ref2 = c("A", "B", "C", "D", "E"), estimate = c(-0.220522748118839, 
-0.179731936253906, 0.0400276364582935, -0.568250677328796, 0.189980289483266
), sign = c("*", "*", NA, "*", "*")), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame"))

library(ggplot2)

ggplot(df, aes(ref2, estimate)) +
  geom_col() +
  geom_text(aes(label = sign),
            size = 10) +
  coord_flip()


df
vjust
hjust
应该有助于:

ggplot(df, aes(ref2, estimate)) +
  geom_col() +
  geom_text(aes(label = sign), 
            hjust = ifelse(df$estimate < 0, 1.5, -0.5),
            vjust = 0.75,
            size = 10) +
  coord_flip()
ggplot(df,aes(参考文献2,估算))+
geom_col()+
几何图形文字(aes(标签=符号),
hjust=ifelse(df$估计值<0,1.5,-0.5),
vjust=0.75,
尺寸=10)+
coord_flip()

vjust
hjust
在这里应该有帮助:

ggplot(df, aes(ref2, estimate)) +
  geom_col() +
  geom_text(aes(label = sign), 
            hjust = ifelse(df$estimate < 0, 1.5, -0.5),
            vjust = 0.75,
            size = 10) +
  coord_flip()
ggplot(df,aes(参考文献2,估算))+
geom_col()+
几何图形文字(aes(标签=符号),
hjust=ifelse(df$估计值<0,1.5,-0.5),
vjust=0.75,
尺寸=10)+
coord_flip()

您可以创建一个新的数据帧,该数据帧采用df$estimate每行的符号,并将其乘以偏移因子。该列/数组基本上可以用作geom_文本的新偏移y轴,以提供所需的效果

df2 <- data.frame(df$estimate) %>% mutate(newEstimate = df$estimate + sign(df$estimate)*0.03)

ggplot(df, aes(ref2, estimate)) +
  geom_col() +
  geom_text(aes(y = df2[,2], label = sign), size = 10) +
  coord_flip()
df2%变异(新估计值=df$估计值+符号(df$估计值)*0.03)
ggplot(df,aes(参考文献2,估算))+
geom_col()+
几何图形文本(aes(y=df2[,2],标签=sign),尺寸=10)+
coord_flip()

您可以创建一个新的数据帧,该数据帧采用df$estimate每行的符号,并将其乘以偏移因子。该列/数组基本上可以用作geom_文本的新偏移y轴,以提供所需的效果

df2 <- data.frame(df$estimate) %>% mutate(newEstimate = df$estimate + sign(df$estimate)*0.03)

ggplot(df, aes(ref2, estimate)) +
  geom_col() +
  geom_text(aes(y = df2[,2], label = sign), size = 10) +
  coord_flip()
df2%变异(新估计值=df$估计值+符号(df$估计值)*0.03)
ggplot(df,aes(参考文献2,估算))+
geom_col()+
几何图形文本(aes(y=df2[,2],标签=sign),尺寸=10)+
coord_flip()