1

R 的大部分内容都在将您的数据转换为正确的格式,而我正在努力创建一个两面板格子图,每组三人一组。最后,我想展示一系列简化的箱形罐,它们只显示从 Lower95 到 Upper95 的一条线和一个中心点,对于每个药物和测试,并且有两个面板(Sen & Spec),有六行(和其中的点)。

我的简化数据看起来像这样

   df2 <- data.frame (
     Center = c(0.94, 0.97, 0.95, 0.97, 1,    0.94,         1,    0.99, 0.96, 0.98, 0.98, 0.99),
     Lower95 =c(0.91, 0.95, 0.93, 0.95, 0.98, 0.91,         0.98, 0.96, 0.92, 0.96, 0.95, 0.96),
     Upper95 =c(0.96, 0.98, 0.97, 0.98, 1,    0.96,         1,    1,    0.98, 0.99, 0.99, 1   ),
     Y     =  c(1,2,3,4,5,6,1,2,3,4,5,6),
     Drug=c("INH","INH","INH","RIF","RIF","RIF","INH","INH","INH","RIF","RIF","RIF"),
     Test=c("LPA","MODS","PSQ","LPA","MODS","PSQ","LPA","MODS","PSQ","LPA","MODS","PSQ"),
     Measure=c("Sen","Sen","Sen","Sen","Sen","Sen","Spec","Spec","Spec","Spec","Spec","Spec") 
     ) 

   attach(df2)
   xyplot(Y~Lower95+Upper95|Measure, df=df2, type="o")

所以这会输出这个图像,并且有几个问题 - 原来的

  1. 我使用 Y 作为“虚拟”变量,试图在同一个面板上获得两组三个测试,但这似乎没有按预期工作。每个面板中有两组三个测试(但请参见#2)
  2. 该图连接了三个测试的三个点(不是Lower95和Upper95的两个点)
  3. 我不清楚如何将中心作为图表中的一个点

这是我想要的东西(我在 GIMP 中的 hack)-所需图表

我尝试重塑数据以及 xyplot 中的其他一些东西(例如不同的因素/组)但未成功,但我似乎无法让它以我希望的方式工作。

谢谢你的帮助 !

4

1 回答 1

1

您正在绘制的内容与点图最相似lattice。标准lattice不适用于错误栏,但该库很好地Hmisc将该功能添加到函数中。lattice所以你可以做

library(lattice)
library(Hmisc)
Dotplot(Test~Cbind(Center,Lower95,Upper95)|Measure+Drug, df2)

要得到

在此处输入图像描述

如果您想更进一步,您还可以latticeExtra将药物标签移到左侧

library(latticeExtra)
useOuterStrips(Dotplot(Test~Cbind(Center,Lower95,Upper95)|Measure+Drug, df2))

这导致

在此处输入图像描述

于 2014-09-25T18:36:50.270 回答