如何用ggplot叠加绘制F1赛事所有车手的单圈位置变化曲线?
F1赛事单圈位置变化曲线绘制指导
以下是实现所有车手位置曲线叠加、颜色编码及标注的核心参数/命令指导:
- 数据过滤调整:移除代码中
code == "HAM"的过滤条件,仅保留raceId == 1074,确保获取该赛事所有车手的圈数数据。 - 颜色编码设置:在
ggplot()的aes()映射中添加color = code(或数据集里代表车手的唯一标识字段,如姓名、driverId),让每条曲线按车手自动分配不同颜色。示例映射逻辑:aes(lap, position, color = code) - 曲线绘制:保留
geom_line()即可,ggplot会自动基于颜色映射生成多条区分颜色的曲线。 - 车手标注优化:
- 若要在曲线末端标注车手代码,可使用
geom_text()配合数据过滤,仅在最后一圈添加标签:geom_text(data = . %>% filter(lap == max(lap)), aes(label = code)) - 若出现标签重叠,可使用
ggrepel包的geom_text_repel()替代geom_text(),自动调整标签位置避免遮挡(需先执行library(ggrepel)加载包)
- 若要在曲线末端标注车手代码,可使用
- Y轴逻辑优化:F1赛事中1代表第一名,建议添加
scale_y_reverse()将Y轴倒序,让排名靠前的位置显示在图表上方,更符合直观认知。 - 图例调整:若需要优化图例展示,可通过
theme(legend.position = "bottom")(或"right"/"top")调整位置,也可用guides(color = guide_legend(title = "车手代码"))修改图例标题。
内容的提问来源于stack exchange,提问作者Jeff Aucone
相关产品推荐
相关产品推荐

