使用facet grid绘制dumbbell plot并列图出现分面变量报错如何解决?
报错原因
- 拼写错误:你的数据集内会话对应的列名为
Session,但facet_wrap中写的是Session.(末尾多了一个点),程序无法识别该不存在的列。 - 图层变量缺失:
dumbbell函数默认只会把传入的id、key等核心参数对应的列带入绘图图层,你要用来分面的Session没有提前声明,导致所有图层都缺失该变量,无法完成分面计算。后续的min/max警告也是因为分面变量缺失,绘图时无法计算坐标轴范围导致的。
修正后完整可运行代码
library(tidyverse) library(dumbbell) dumbbell::dumbbell(data10A, id = "conditon2", key = "Trial_type", group = "Session", # 新增:声明需要保留的分面变量 leg = "Test", column1 = "NormalizedJerk_102", column2 = "NormalizedJerk_104", delt = 1, lab1 = "Pre-test", lab2 = "Post-test", p_col1 = "black", p_col2 = "grey40", textsize = 4, segsize = 1.5, pointsize = 2.5, title = "Change in Normalized jerk from Pre- to Post-test") + # 修正:将错误的Session.改为实际存在的列名Session facet_wrap( Trial_type ~ Session, scales="free", ncol=2) + theme(axis.text.x = element_text(size = 12, face = "bold"), axis.text.y = element_text(size = 11, face = "bold"), legend.position = "right", legend.text = element_text(size = 12), legend.title = element_text(size = 14), strip.text = element_text(face = "bold", size = 14, color = "black"))
调整说明
- 给
dumbbell函数增加group = "Session"参数,告知函数需要将Session列保留到所有绘图图层中,供分面逻辑调用 - 修正
facet_wrap中的列名拼写错误,将Session.改为数据集实际存在的Session - 调整后运行代码即可正常生成按
Trial_type和Session分面的哑铃图,原有的min/max警告也会同步消失
内容的提问来源于stack exchange,提问作者Reuben Newton Addison
相关产品推荐
相关产品推荐

