使用“lattice”和“latticeExtra”组合/叠加不同类型的图形

时间:2012-10-20 07:58:15

标签: r data-visualization bar-chart lattice

我正在尝试组合或者说用一个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刻度的不同刻度)

对于(1),我知道如何将不同类型的图形与ggplot2组合在一起,但是对于格子也应该是可能的,对吗?我试过“doubleYScale”,这似乎不起作用。

对于(2),我只完成了对“scale”选项中的y-scale使用“relation ='free'”(参见代码)。这很好,因为重点是值的重要范围。但是,如果在左侧和右侧外部绘制轴标签更为合适(分别为“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)

1 个答案:

答案 0 :(得分: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)