【问题标题】:How to plot multiple variogram plots with different title using loop/lapply function?如何使用 loop/lapply 函数绘制具有不同标题的多个变异函数图?
【发布时间】:2015-11-25 01:16:51
【问题描述】:

我有一个 csv 文件,其中包含 3 月 1 日至 3 月 7 日的每小时 PM10 浓度。 Please, download from here. 我已经通过 automap 包在一个循环中绘制了所有变异函数(总共 161 个)。

library(sp)
library(gstat)
library(rgdal)
library(automap)
library(latticeExtra)

seoul1to7<-read.csv("seoul1to7.csv")
seoul1to7[seoul1to7==0] <-NA
seoul1to7 <- na.omit(seoul1to7)
seoul1to7_split<-split(seoul1to7,seoul1to7$time) 
seq(seoul1to7_split)



vars<-lapply(seq(seoul1to7_split), function(i)
{
  dat<-seoul1to7_split[[i]]  
  coordinates(dat)<-~LON+LAT
  proj4string(dat) <- "+proj=longlat +datum=WGS84" 
  dat <- spTransform(dat, CRS("+proj=utm +north +zone=52 +datum=WGS84"))
  variogram<-autofitVariogram(log(PM10)~1,dat, model="Sph")
  plot<- plot(variogram,plotit=FALSE, asp=1)

  return(plot)
})
vars[[1]]
vars[[2]]

在这里,我可以通过vars[[1]],vars[[2]]...etc 获取单个图,但所有变异函数都有相同的标题。现在,我想在一个循环中绘制所有具有不同标题的变异函数图像。我希望我的变异函数标题类似于“2012-03-01 1.00 变异函数”、“2012-03-01 2.00 变异函数”......等等。

a<-as.POSIXct(names(seoul1to7_split), format="%Y%m%d%H")
a
hours<-substr(a,1,16)
hours

我将我想要的不同标题保留在 hours 变量中,例如“2012-03-01 01:00”、“2012-03-01 02:00”、“2012-03-01 03:00”...等等

如何使用循环绘制具有不同标题的所有变异函数(共 161 个)?

【问题讨论】:

    标签: r loops lapply automap


    【解决方案1】:

    诀窍是使用pngdev.off

    library(automap)
    data(meuse)
    coordinates(meuse) = ~x+y
    
    fit_for_model_type = function(model_type) {
        return(autofitVariogram(log(zinc) ~ dist, meuse, model = model_type))
    }
    
    model_options = c("Sph", "Exp", "Gau", "Ste")
    list_of_variogram_models = lapply(model_options, fit_for_model_type)
    names(list_of_variogram_models) = model_options
    lapply(names(list_of_variogram_models), function(x) {
        png(filename = sprintf('%s.png', x))
        print(plot(list_of_variogram_models[[x]]))
        dev.off()
    })
    

    【讨论】:

    • 实际上我也想要每个变异函数的不同标题..我已经编辑了我的问题标题..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多