【问题标题】:How to manipulate plots in spplot in R如何在 R 中的 spplot 中操作绘图
【发布时间】:2020-04-11 10:23:28
【问题描述】:

我正在尝试使用 spplot 来可视化不同月份的图。我想更改这个数字,以便相同的月份在相同的列中以便轻松比较。我想在 2016 年 5 月推出 5 个面板,所以剩下的几个月都在排队。我希望这是有道理的。 click here for figure

我目前缺少 2017 年 12 月的数据,这就是它被涂黑的原因。

这是我的代码:

stack_months <- stack(May2016, June2016, July2016, Aug2016, Sep2016, Oct2016, Nov2016, Dec2016, January2017, Febuary2017, March2017, April2017, May2017, June2017, July2017, July2017, Aug2017, Sep2017, Oct2017, Nov2017, Dec2017, January2018, Febuary2018, March2017, April2018, May2018, June2017, July2017, July2018, Aug2018, Sep2018, Oct2018, Nov2018, Dec2018, January2019, Febuary2019, March2019, April2019, May2019, June2019, July2019, July2019)
spplot(stack_months, col.regions=viridis(20), names.attr = c("May2016", "June2016", "July2016", "Aug2016", "Sep2016", "Oct2016", "Nov2016", "Dec2016", 
                                                             "Jan2017", "Feb2017", "March2017", "April2017", "May2017", "June2017", "July2017", "July2017", "Aug2017", "Sep2017", "Oct2017", "Nov2017", "Dec2017",
                                                             "Jan2018", "Feb2018", "March2017", "April2018", "May2018", "June2017", "July2017", "July2018", "Aug2018", "Sep2018", "Oct2018", "Nov2018", "Dec2018", 
                                                             "Jan2019", "Feb2019", "March2019", "April2019", "May2019", "June2019", "July2019", "July2019"), layout = c(12,4))

有没有简单的方法来操作面板?

【问题讨论】:

    标签: r plot lattice sp


    【解决方案1】:

    请注意,您将某些月份输入了两次,例如 July2017 出现了 3 次,March2017 出现了 2 次,June2017 出现了 2 次,July2019 出现了 2 次。

    下面是从 2016 年 5 月到 2019 年 7 月的完整月份,因此当您绘制时,月份会对齐。

    library(raster)
    library(sp)
    library(viridis)
    library(lattice)
    
    months=c("May2016", "June2016", "July2016", "Aug2016", "Sep2016", "Oct2016", 
    "Nov2016", "Dec2016", "Jan2017", "Feb2017", "March2017", "April2017", 
    "May2017", "June2017", "July2017","Aug2017", "Sep2017", 
    "Oct2017", "Nov2017", "Dec2017","Jan2018", "Feb2018", "March2018", 
    "April2018", "May2018", "Jun2018", "July2018", "Aug2018", 
    "Sep2018", "Oct2018", "Nov2018", "Dec2018","Jan2019", "Feb2019", 
    "March2019", "April2019", "May2019", "June2019", "July2019")
    

    我没有你的数据,所以我为图像模拟了一些东西:

    r <- raster(system.file("external/test.grd", package="raster"))
    stack_months = do.call(stack,lapply(months,function(i)runif(1)*r))
    

    您将布局定义为 12,4,因此您将拥有 48 个按行填充的条目。在您的情况下,不会绘制前 4 个,不会绘制后 5 个:

    SKIP = rep(FALSE,12*4)
    SKIP[1:4] = TRUE
    SKIP[44:48] = TRUE
    

    然后我们使用上面的 SKIP 进行绘图:

    spplot(stack_months, col.regions=viridis(20),
    layout = c(12,4),
    strip = strip.custom(par.strip.text = list(cex = 0.65)),
    names.attr = months,
    skip=SKIP
    )
    

    【讨论】:

    • 你知道如何让剧情标题变大吗?那么让 May2016、June2016 等更大?
    • 嗨@AnnaWindle,你试试下面的东西吗?基本上你必须对 par.strip.text 进行 cex,但是为了看到增加的字体大小,你必须使用带状文本的方面和参数
    • stripParams
    猜你喜欢
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多