提问人:Jaimi Mostellar 提问时间:10/3/2023 最后编辑:zx8754Jaimi Mostellar 更新时间:10/3/2023 访问量:34
-x 中的错误:使用 ggplot 2 多行代码的一元运算符的参数无效
Error in -x: invalid argument to unary operator using ggplot 2 multiline code
问:
我正在尝试使用比值比制作森林图;但是,我总是遇到问题。当我运行代码时,我收到此消息“Error in -x: invalid argument to unary operator”。
我已经在代码行的开头检查了额外的“+”,但似乎找不到任何。
这是我尝试运行的代码:
ggplot(Limit_water_Round, aes(y = term, x = oddsratio)) +
geom_point(shape = 18, size = 5) +
geom_errorbarh(aes(xmin = conflower, xmax = confupper), height = 0.25) +
geom_vline(xintercept = 1, color = "red", linetype = "solid", cex = 1, alpha = 0.5) +
scale_y_continuous(name = "", breaks=1:11, labels = Limit_water_Round$term,
trans = "reverse") +
xlab("Odds Ratio (95% CI)") +
ylab(" ") +
theme_bw() + theme(panel.border = element_blank(),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black"),
axis.text.y = element_text(size = 12, colour = "black"),
axis.text.x.bottom = element_text(size = 12, colour = "black"),
axis.title.x = element_text(size = 12, colour = "black"))
答:
0赞
Nijiati_Abulizi
10/3/2023
#1
当对数据执行算术运算时出现问题时,可能会导致您遇到的错误消息,而不一定是 ggplot 代码本身的问题。从您的代码来看,似乎 .geom_errorbarh
以下是排查和解决问题的几个步骤:
1. 纠正水平误差线的错别字:
替换为并适当调整映射。由于将项放在 y 轴上,将比值比放在 x 轴上,因此可能不需要水平误差线函数;该标准可能适用于翻转的坐标。geom_errorbarh
geom_errorbar
aes
geom_errorbar
2. 检查数据类型和值:
确保映射中的所有变量 (、、 和 ) 在数据框中都可用,并且具有正确的数据类型和值。错误消息可能是由于尝试对非数字数据类型执行算术运算或处理 or 值而导致的。oddsratio
conflower
confupper
term
aes()
Limit_water_Round
NA
NULL
3. 检查和调试:
您可能需要打印或检查数据框,以确保它包含您期望的内容。如果可能,请尝试使用数据子集或虚拟数据运行代码,以确定可能发生错误的位置。Limit_water_Round
ggplot
建议/调整的代码:
以下是对代码的粗略调整(可能需要根据特定数据和所需输出进一步调整):
ggplot(Limit_water_Round, aes(y = term, x = oddsratio)) +
geom_point(shape = 18, size = 5) +
geom_errorbar(aes(xmin = conflower, xmax = confupper), height = 0.25) +
geom_vline(xintercept = 1, color = "red", linetype = "solid", size = 1, alpha = 0.5) +
scale_y_continuous(name = "", breaks = 1:11, labels = Limit_water_Round$term) +
coord_flip() +
labs(x = "Odds Ratio (95% CI)", y = " ") +
theme_bw() +
theme(panel.border = element_blank(),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black"),
axis.text.y = element_text(size = 12, colour = "black"),
axis.text.x.bottom = element_text(size = 12, colour = "black"),
axis.title.x = element_text(size = 12, colour = "black"))
评论
0赞
Jaimi Mostellar
10/3/2023
谢谢你的帮助。我尝试调整我的代码,现在出现以下错误“提供给连续刻度的离散值”。我的比值比是数值,是在二项式逻辑回归期间计算得出的。我也不确定如何解决这个问题。
0赞
Jaimi Mostellar
10/3/2023
我试着把“scale_y_continuous”改成“scale_y_discrete”,我得到了一个情节。但是,我的轴是翻转的,y 轴上有奇数比,x 轴上有项。有什么技巧可以解决上述错误或其他解决方案,因为刻度是离散的还是连续的?
0赞
Jaimi Mostellar
10/3/2023
我想通了!谢谢你的帮助。
评论