gpt4 book ai didi

r - ggplot geom_errorbarh 错误(输入为连续时需要离散,但输入为离散时需要连续)

转载 作者:行者123 更新时间:2023-12-04 12:01:42 25 4
gpt4 key购买 nike

我正在使用 ggplot2 为元分析创建森林图. Here is what an earlier version/incomplete graph looked like.

我现在的问题是,我要回去继续处理它,一切正常,除了我不能用 geom_errorbarh 得到错误栏。 .

数据: Here is a data file from dput on my dropbox.对于我的一生,我无法弄清楚如何让它直接粘贴到这里,以一种可以毫无问题地复制并粘贴到 R 中的方式。无论如何,如果您只是保存该文件 (q.df) 并运行 df.forest <- dget("your-path/q.df") ,你将有一个可用的 df。 (注意:这是从我正在使用的完整 df 中解析出来的,只包含这个特定情节所需的变量,但如果有什么不合理的地方,请告诉我,我会尽力澄清。)

这么多工作并生成我想要的图表,除了错误栏。

ggplot(df.forest, aes(y=ID, x=g,  shape = iv.domain, size = plot.weight))+
geom_point(aes(size = iv.domain))+
scale_shape_manual(name = "IV Domain",
values = c(15, 16, 17, 5),
labels = c("Abstraction", "Social", "Temporal",
"Summary\neffects"))+
ylab("Refrence")+
scale_x_continuous(limits=c(-1.5,2.5), name='Effect size (g)')+
geom_vline(xintercept=0, color='dark grey', linetype='dotted')+
facet_grid(dv.level~., scales= 'free', space='free')+
theme_bw()+
theme(panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
panel.border=element_blank(),
axis.line=element_line(),
text=element_text(family='Times'),
plot.caption=element_text(hjust = 0, vjust = -7),
plot.margin = unit(c(.25,.25,.75,.25), "cm"))+
guides(size = FALSE) +
scale_size_discrete(range = c(1.5,4.5))

但如果我添加:+ geom_errorbarh(aes(xmin=gLL, xmax=gUL),height=.3) ,(其中 gLLgUL 是代表 95% CI 下限/上限的数字值),它给了我一个错误:
Error: Continuous value supplied to discrete scale .

但是,如果我输入 gLL 的分解版本和 gUL : + geom_errorbarh(aes(xmin=gLL.f, xmax=gUL.f),height=.3) ,它给了我相反的错误:
Error: Discrete value supplied to continuous scale .

我到处搜索,似乎无法找到任何人遇到函数问题的地方,当你输入连续时说某事应该是离散的,但当你输入时说某事应该是连续的输入它作为离散。

此外,我不知道为什么它昨天有效,但今天却无效。我已经重新启动 R/清除我的环境,并逐行回顾我的整个脚本以确保导致此错误的任何内容都已关闭,但我找不到任何东西。我试过添加 aes()来自 geom_errorbarhggplot(aes())相反,但这也没有改变任何东西。再一次,如果我在没有 geom_errorbarh 的情况下运行这些行, 它使我想要的精确图形减去误差条,所以误差肯定在那一行。

如有任何帮助,我们将不胜感激!

干杯!

编辑:感谢@eipi10,我弄明白了。我忽略了我在哪里改变了我的尺寸 aes()变量是(并没有考虑它,因为它运行得很好,直到你在 geom_errorbarh 行中添加)。这也解释了为什么它让我使用 scale_size_discrete这没有意义,但它起作用了,所以我接受了。无论如何,一旦我删除了 aes()geom_point() 内, 并更改了 scale_size_discretescale_size , 有效!!谢谢! -AE

最佳答案

发生这种情况是因为您有两个尺寸映射,size = plot.weight在主 ggplot 调用中和 size=iv.domaingeom_point .第一个是连续的,第二个是离散的。您可以拥有其中之一,但不能同时拥有,并且 scale_size_***调用必须匹配您映射到大小的变量类型(连续或离散)。

关于r - ggplot geom_errorbarh 错误(输入为连续时需要离散,但输入为离散时需要连续),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47639443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com