如何用ggplot绘制带箭头连接的学校实际/预期分数对比图?
用ggplot绘制带箭头的学校分数对比图
你的需求是用箭头连接同一学校的actual_score(红点)和expected_score(蓝点),可以通过geom_segment()实现,以下是修正后的完整代码:
data %>% mutate(School = fct_reorder(School, actual_score)) %>% ggplot(aes(x = School)) + # 绘制带箭头的连线(置于散点下方,避免遮挡) geom_segment( aes(y = expected_score, yend = actual_score, xend = School), arrow = arrow(length = unit(0.2, "cm")), color = "gray50" ) + geom_point(aes(y = actual_score), colour = "red") + geom_point(aes(y = expected_score), colour = "blue") + # 可选:优化图表标签 labs( y = "分数", title = "各学校实际分数vs预期分数" )
关键说明:
geom_segment():专门用于绘制线段,x和xend都绑定School,确保同一学校的两个点在同一垂直线上;y和yend分别对应预期分数和实际分数,定义线段的起止位置。arrow参数:通过arrow(length = unit(0.2, "cm"))添加箭头,length值可以根据需要调整箭头大小。- 图层顺序:先画线段再画散点,避免箭头被散点遮挡。
如果需要调整箭头方向(比如从实际分数指向预期分数),只需交换y和yend的取值即可:
geom_segment( aes(y = actual_score, yend = expected_score, xend = School), arrow = arrow(length = unit(0.2, "cm")), color = "gray50" )
内容的提问来源于stack exchange,提问作者m45ha
相关产品推荐
相关产品推荐

