使用晶格封装,R编程跳过空面板

时间:2018-04-19 17:35:56

标签: r panel lattice

我想在R中使用网格包跳过一个空面板。

set.seed(1)
df1 <- data.frame("treatment" = c(rep("A",16),rep("B",16),rep("C",16)),
                  "disease_type" = c(rep("1",8),rep("2",8)),
                  "days_after_application" = rep(c(rep("10-24",4),rep("24-48",4)),6),
                  "severity" = rnorm(48, mean = 80, sd = 5))
df1[(df1$disease_type == "2" & df1$days_after_application == "24-48"),"severity"] <- NA
library(lattice)
figure1 <- bwplot(treatment~severity|days_after_application+disease_type,
                  data = df1,layout = c(2,2),
                  strip = strip.custom(strip.names = TRUE))
jpeg("figure1.jpeg")
print(figure1)
dev.off()

这是我得到的 Figure1

我的问题是如何在不改变布局的情况下删除/跳过右上方的空面板?

我试过以下代码。但是,它没有用。

figure2 <- bwplot(treatment~severity|days_after_application+disease_type,
                  data = df1,layout = c(2,2),
                  strip = strip.custom(strip.names = TRUE),
                  skip = c(FALSE,FALSE,FALSE,TRUE))
jpeg("figure2.jpeg")
print(figure2)
dev.off()

这是我得到的

Figure2

我也试过以下代码。但这不是我想要的,因为我确实需要2个级别的条带。

df1[(df1$disease_type == "2" & df1$days_after_application == "24-48"),] <- NA
bwplot(treatment~severity|interaction(days_after_application,disease_type),
       data = df1,layout = c(2,2),
       strip = strip.custom(strip.names = TRUE))

谢谢!

1 个答案:

答案 0 :(得分:0)

获得坦普尔大学教授的帮助。

这是他的解决方案:

figure4 <- bwplot(treatment~severity|days_after_application+disease_type,
                  data = df1,layout = c(2,2),
                  strip = strip.custom(strip.names = TRUE),
                  skip = c(FALSE,FALSE,FALSE,TRUE),
                  scales=list(alternating=FALSE),  ## keep x-scale on bottom
                  between=list(x=1, y=1))          ## space between panels
pdf("figure4%03d.pdf",onefile = FALSE) ## force two pages in file.
print(figure4)
dev.off()