如何在 geom_point 的 4 个级别上对齐中值标签?

问题描述 投票:0回答:1

我已在 geom_point 中添加了中线,并要求通过 hjust = -1.5 将标签附加到它们的右侧。然而,第四级的标签未对齐,位于中线右侧更远的位置。我怀疑这与该数字相对于其他个位数数字的大小有关。我怎样才能纠正这个问题,以便所有标签与其相应的中线等距?

ggplot(UK_12wk1, aes(x = experiment_flag, y = Message_numbers_3m)) +
    geom_point(cex = 1.5, pch = 1.0, position = position_jitter(w = 0.1, h =0)) +
    scale_y_continuous(limits = c(0,100), breaks = seq(0, 100, 10)) +
    stat_summary(fun = 'median', aes(colour = "median"), geom = "crossbar", width = 0.4) +
    stat_summary(aes(label=round(..y..,2)), fun = 'median', geom = 'label', size = 4, hjust = -1.5)      +
    scale_x_discrete(limits = c("Control", "Reactive text", "Reactive premium", "Proactive")) +
    geom_hline(yintercept = 0, linetype = 'dashed', color = "blue") +
    theme(axis.text.x = element_text(size = 10, face = "italic", vjust = 0.65),             axis.ticks.x =     element_blank(), axis.title.x = element_text(size = 16)) +
    theme(axis.title.y = element_text(size = 16), legend.title = element_text(size = 16),    plot.title = element_text(size = 20, face = "bold")) +
     labs(x = "Group", y = "Messages sent", color = NULL) 

enter image description here

r ggplot2 label geom-point
1个回答
0
投票

一种选择是使用

hjust=1.5
将标签移动到红色中线的左侧。

stat_summary(aes(label=round(..y..,2)), fun = 'median', geom = 'label', size = 4, hjust=1.5)

enter image description here

另一种选择是使用

sprintf
代替
round
使标签的大小更加相似。

stat_summary(aes(label=sprintf("%.2f", ..y..)), 
             fun='median', geom='label', size=4, hjust=-0.5)

enter image description here


数据:

UK_12wk1 <- structure(list(experiment_flag = c("Control", "Control", "Control", 
"Control", "Control", "Control", "Control", "Control", "Control", 
"Control", "Control", "Control", "Control", "Control", "Control", 
"Control", "Control", "Control", "Control", "Control", "Control", 
"Control", "Control", "Control", "Control", "Control", "Control", 
"Control", "Control", "Control", "Control", "Control", "Control", 
"Control", "Control", "Control", "Control", "Control", "Control", 
"Control", "Control", "Control", "Control", "Control", "Control", 
"Control", "Control", "Control", "Control", "Control", "Reactive text", 
"Reactive text", "Reactive text", "Reactive text", "Reactive text", 
"Reactive text", "Reactive text", "Reactive text", "Reactive text", 
"Reactive text", "Reactive text", "Reactive text", "Reactive text", 
"Reactive text", "Reactive text", "Reactive text", "Reactive text", 
"Reactive text", "Reactive text", "Reactive text", "Reactive text", 
"Reactive text", "Reactive text", "Reactive text", "Reactive text", 
"Reactive text", "Reactive text", "Reactive text", "Reactive text", 
"Reactive text", "Reactive text", "Reactive text", "Reactive text", 
"Reactive text", "Reactive text", "Reactive text", "Reactive text", 
"Reactive text", "Reactive text", "Reactive text", "Reactive text", 
"Reactive text", "Reactive text", "Reactive text", "Reactive text", 
"Reactive text", "Reactive text", "Reactive text", "Reactive text", 
"Reactive text", "Reactive premium", "Reactive premium", "Reactive premium", 
"Reactive premium", "Reactive premium", "Reactive premium", "Reactive premium", 
"Reactive premium", "Reactive premium", "Reactive premium", "Reactive premium", 
"Reactive premium", "Reactive premium", "Reactive premium", "Reactive premium", 
"Reactive premium", "Reactive premium", "Reactive premium", "Reactive premium", 
"Reactive premium", "Reactive premium", "Reactive premium", "Reactive premium", 
"Reactive premium", "Reactive premium", "Reactive premium", "Reactive premium", 
"Reactive premium", "Reactive premium", "Reactive premium", "Reactive premium", 
"Reactive premium", "Reactive premium", "Reactive premium", "Reactive premium", 
"Reactive premium", "Reactive premium", "Reactive premium", "Reactive premium", 
"Reactive premium", "Reactive premium", "Reactive premium", "Reactive premium", 
"Reactive premium", "Reactive premium", "Reactive premium", "Reactive premium", 
"Reactive premium", "Reactive premium", "Reactive premium", "Proactive", 
"Proactive", "Proactive", "Proactive", "Proactive", "Proactive", 
"Proactive", "Proactive", "Proactive", "Proactive", "Proactive", 
"Proactive", "Proactive", "Proactive", "Proactive", "Proactive", 
"Proactive", "Proactive", "Proactive", "Proactive", "Proactive", 
"Proactive", "Proactive", "Proactive", "Proactive", "Proactive", 
"Proactive", "Proactive", "Proactive", "Proactive", "Proactive", 
"Proactive", "Proactive", "Proactive", "Proactive", "Proactive", 
"Proactive", "Proactive", "Proactive", "Proactive", "Proactive", 
"Proactive", "Proactive", "Proactive", "Proactive", "Proactive", 
"Proactive", "Proactive", "Proactive", "Proactive"), Message_numbers_3m = c(10, 
1, 1, 4, 3, 4, 5, 0, 2, 2, 4, 6, 7, 10, 0, 0, 2, 1, 4, 5, 6, 
2, 1, 2, 4, 1, 2, 5, 0, 6, 1, 5, 19, 5, 10, 0, 10, 1, 7, 10, 
5, 7, 0, 5, 7, 8, 0, 11, 1, 8, 3, 7, 4, 10, 2, 13, 5, 6, 5, 11, 
2, 12, 11, 6, 1, 8, 0, 12, 11, 0, 1, 7, 17, 4, 8, 8, 1, 16, 6, 
6, 2, 1, 4, 13, 7, 6, 14, 3, 8, 4, 4, 6, 6, 6, 13, 4, 3, 3, 3, 
5, 7, 14, 5, 5, 13, 2, 7, 10, 3, 16, 6, 9, 16, 6, 19, 19, 16, 
8, 3, 3, 3, 6, 18, 7, 23, 10, 8, 11, 9, 11, 17, 10, 27, 8, 18, 
19, 6, 5, 8, 10, 8, 9, 2, 8, 6, 3, 6, 3, 9, 7, 10.1124, 13.69, 
8.2369, 14.7456, 9.7344, 7.84, 12.4609, 14.0625, 18.7489, 6.6564, 
24.3049, 19.0096, 21.16, 25.5025, 14.2884, 9.4249, 5.3824, 4.9729, 
16.3216, 19.0969, 13.2496, 13.1044, 16.4025, 7.5076, 25.3009, 
14.5161, 11.56, 18.5761, 10.3041, 25.8064, 16.6464, 16.3216, 
13.5424, 11.1556, 7.8961, 2.7889, 7.4529, 25.2004, 5.1529, 19.7136, 
22.5625, 23.04, 12.8881, 9.7344, 19.4481, 16.9744, 17.9776, 25.4016, 
8.7616, 4.3264)), class = "data.frame", row.names = c(NA, -200L
))
© www.soinside.com 2019 - 2024. All rights reserved.