R中的xyplot,在一个面板中有多个图,晶格

时间:2018-08-23 10:24:10

标签: r plot panel lattice

我有一个通过以下方式构造的测试数据集:

d <- seq.Date(as.Date("2000-01-01"), as.Date("2000-01-08"), by=1)
df1 <- data.frame(time = d, type = 'type1', value = runif(length(d)))
df2 <- data.frame(time = d, type = 'group1', value = runif(length(d)))
df3 <- data.frame(time = d, type = 'group2', value = runif(length(d)))
df4 <- data.frame(time = d, type = 'pen', value = runif(length(d)))
df <- rbind(df1, df2, df3, df4)

我想使用xyplot函数以格子形式绘制数据,其中面板显示在一列中。我可以执行以下操作:

xyplot(value~time | type, df, layout=c(1, length(levels(df$type))))

这样,我有4行(有很多类型)。但是,实际上,我想在同一面板中以不同的颜色绘制group1和group2(这样我只有3行)。有人可以帮我这个忙吗?

1 个答案:

答案 0 :(得分:1)

您可以通过暂时忽略“ group1”和“ group2”中的数字为所有“组”记录创建一个面板。这就是gsub()在下面的代码中所做的–用""替换“组”类型中的所有数字,从而创建了一个条件图,其中三个面板而不是四个面板。

现在,剩下要做的就是为所有levels(df$type)定义不同的颜色。 names()操作不是强制性的;它只是有助于保持对不同因素水平(尤其是其顺序)的概览。

# colors
clr = c("black", "black", "orange", "black")
names(clr) = levels(df$type) # for clarification only

# grouped scatterplot
xyplot(value~time | gsub("group[[:digit:]]", "group", type), df, group = type
       , layout = c(1, length(levels(df$type)) - 1), col = clr, cex = 1.2, pch = 20)

xyplot