【问题标题】:xyplot in R with several plots in one panel, latticeR中的xyplot,一个面板中有多个图,格子
【发布时间】:2019-01-29 16:53:18
【问题描述】:

我有一个按以下方式构建的测试数据集:

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 行)。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: r plot panel lattice


    【解决方案1】:

    您可以通过暂时忽略“group1”和“group2”中的数字为所有“group”记录创建一个面板。这就是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)
    

    【讨论】:

    • 抱歉回复晚了。你的解决方案奏效了。非常感谢您的帮助。
    猜你喜欢
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多