1

我正在尝试将条形图与 xyplot(带有回归线)和两个值完全不同的变量结合起来。

这是我的数据:https ://www.dropbox.com/s/aacbkmo577uagjs/example.csv

根据下面的代码,面板中有两个数值变量“rb”和“rae”以及几个因子变量(sample.size、effect.size、allocation.design、true.dose)。变量“rae”应显示在条形图中(理想情况下在背景中以淡色显示),而变量“rb”应显示在带有回归线的 xyplot 中。有两个主要问题:

(1) 如何组合/叠加两种类型的图表?(2) 如何自定义坐标轴标签(y-scale的不同比例)

对于(1),我知道如何将不同类型的图形与 ggplot2 组合,但使用 lattice 也应该可以,对吗?我尝试了“doubleYScale”,这似乎不起作用。

对于 (2),我只完成了在“scales”选项中使用“relation='free'”作为 y 比例(参见代码)。这很好,因为重点是值的重要范围。但是,如果在左右外侧额外绘制轴标签(分别为“rae”和“rb”),则更合适。

这是到目前为止的代码(由 Dieter Menne 修改为独立的)

library(lattice)
library(latticeExtra)
df.dose <- read.table("example.csv", header=TRUE, sep=",")
df.dose <- transform(df.dose, 
                    sample.size=as.factor(sample.size),
                    true.dose = as.factor(true.dose))

rae.plot <- xyplot(
  rae ~ sample.size | allocation.design*true.dose,                
  df.dose, as.table=TRUE, 
  groups = type, 
  lty = 1, jitter.x=TRUE, 
  main="RAE", 
  scales=list(y=list(draw=F, relation="free", tck=.5)), 
  panel = function(x,y) { 
    panel.xyplot(x,y,jitter.x=TRUE)
    panel.lmline(x,y, col="darkgrey", lwd=1.5) 
  })

useOuterStrips(rae.plot)

rb.plot <- barchart(
  rb ~ sample.size | allocation.design*as.factor(true.dose), 
  df.dose, as.table=TRUE, 
  groups = type, 
  key=list(
    text=list(levels(as.factor(df.dose$type))), 
    scales=list(y=list(draw=F, relation="free", tck=.5)), 
    main="RB"))

useOuterStrips(rb.plot)
4

1 回答 1

1
print(useOuterStrips(rae.plot), split=c(1,1,1,2),more=TRUE)
print(useOuterStrips(rb.plot), split=c(1,2,1,2), more=FALSE)

将两者打印在一页上;它比 ggplot2 更容易。

scales=list(
  y=list(alternating=1,tck=c(1,0)),
  x=list(alternating=1,tck=c(1,0)))
xyplot (... scales=scales)
于 2012-10-20T10:05:14.720 回答