Forestplot-多变量和数据帧

Forestplot-多变量和数据帧,r,ggplot2,R,Ggplot2,我使用以下代码来执行forestplot 它工作得很好,没有问题,但我想从两个数据帧绘制forestplot。因此,结果要么是来自每个数据帧的变量在彼此下面,要么是在同一行中具有不同颜色的变量 另外,ggplot将变量的顺序更改为Z->A,我希望它们保持非字母顺序 forestplot <- function(d, xlab="Estimate", ylab="Study"){ require(ggplot2) p <- ggplot(d, aes(x=x, y=y, ymin

我使用以下代码来执行forestplot

它工作得很好,没有问题,但我想从两个数据帧绘制forestplot。因此,结果要么是来自每个数据帧的变量在彼此下面,要么是在同一行中具有不同颜色的变量

另外,ggplot将变量的顺序更改为Z->A,我希望它们保持非字母顺序

forestplot <- function(d, xlab="Estimate", ylab="Study"){
  require(ggplot2)
 p <- ggplot(d, aes(x=x, y=y, ymin=ylo, ymax=yhi)) + 
geom_pointrange() + 
coord_flip() +
geom_hline(yintercept=0, lty=3) +
ylab(xlab) +
xlab(ylab) + #switch because of the coord_flip() above
ggtitle("...")
return(p)
}    
forestplot(d)

forestplot只需在函数开头绑定两个数据帧:

 forestplot <- function(d1, d2, xlab="Estimate", ylab="Study")
   {
   d = rbind(cbind(d1, df = "1"), cbind(d2, df = "2"))
   require(ggplot2)
   p <- ggplot(d, aes(x=x, y=y, ymin=ylo, ymax=yhi, color = df, group = df)) + 
   geom_pointrange(position = position_dodge(width = 0.5)) + 
   coord_flip() +
   geom_hline(yintercept=0, lty=3) +
   ylab(xlab) +
   xlab(ylab) + #switch because of the coord_flip() above
   ggtitle("...")
   return(p)
 } 

我无法用此数据重现您的错误(注释),问题可能在输入数据框中。

只需在函数开头绑定两个数据框:

 forestplot <- function(d1, d2, xlab="Estimate", ylab="Study")
   {
   d = rbind(cbind(d1, df = "1"), cbind(d2, df = "2"))
   require(ggplot2)
   p <- ggplot(d, aes(x=x, y=y, ymin=ylo, ymax=yhi, color = df, group = df)) + 
   geom_pointrange(position = position_dodge(width = 0.5)) + 
   coord_flip() +
   geom_hline(yintercept=0, lty=3) +
   ylab(xlab) +
   xlab(ylab) + #switch because of the coord_flip() above
   ggtitle("...")
   return(p)
 } 

我无法用此数据重现您的错误(评论),问题可能出在输入数据框中。

非常感谢!这对我帮助很大!事实上,我还有一个问题。。你给我的脚本是有效的,但估计值不正确,它将结果绘制为不正确的值,例如:在数据帧1中:CRP11=平均值0.06406516 ylo 0.012618338 yhi 0.11551199数据帧2:CRP11=平均值-0.010406175 ylo-0.0634425313 yhi 0.04263018。。。。在数据帧1(灰色):CRP11=平均值0.06406516 ylo 0.012618338 yhi 0.11551199数据帧2(黄色):CRP11=平均值-0.010406175 ylo-0.0634425313 yhi 0.04263018仍然结果如下:值不在其位置@bVaI刚刚编辑了我的答案。这些值与您的数据不在同一位置,我用答案中使用的数据进行了检查,在这里它起作用了。我无法再现你的错误。也许可以检查并更正函数中的变量名(
y=mean
?)。是的,我现在就得到了它,代码中有一个错误,导致结果混乱。对不起打扰了,谢谢!非常感谢你!这对我帮助很大!事实上,我还有一个问题。。你给我的脚本是有效的,但估计值不正确,它将结果绘制为不正确的值,例如:在数据帧1中:CRP11=平均值0.06406516 ylo 0.012618338 yhi 0.11551199数据帧2:CRP11=平均值-0.010406175 ylo-0.0634425313 yhi 0.04263018。。。。在数据帧1(灰色):CRP11=平均值0.06406516 ylo 0.012618338 yhi 0.11551199数据帧2(黄色):CRP11=平均值-0.010406175 ylo-0.0634425313 yhi 0.04263018仍然结果如下:值不在其位置@bVaI刚刚编辑了我的答案。这些值与您的数据不在同一位置,我用答案中使用的数据进行了检查,在这里它起作用了。我无法再现你的错误。也许可以检查并更正函数中的变量名(
y=mean
?)。是的,我现在就得到了它,代码中有一个错误,导致结果混乱。对不起打扰了,谢谢!这在forestplot包中是可能的这在forestplot包中是可能的
 print(d1)
           y  x          ylo       yhi
 1 0.2655087 s5  0.059534088 0.4420654
 2 0.3721239 s4  0.166149325 0.5486807
 3 0.5728534 s2  0.366878788 0.7494101
 4 0.9082078 s3  0.702233215 1.0847645
 5 0.2016819 s1 -0.004292644 0.3782387

 print(d2)
           y  x         ylo       yhi
 1 0.6870228 s5  0.03534908 0.8125779
 2 0.3841037 s2 -0.26757005 0.5096588
 3 0.7698414 s3  0.11816765 0.8953965
 4 0.4976992 s4 -0.15397452 0.6232543
 5 0.7176185 s1  0.06594474 0.8431736