[R-sig-Geo] How to plot multiple semi-variogram from a single dataset efficiently in R?
Tim Appelhans
tim.appelhans at gmail.com
Wed Aug 26 09:41:28 CEST 2015
Uzzal,
it should show exactly that in the top left corner of each variogram. It
does on my computer.
Also, I include R-si-geo again as other people might have similar problems.
Cheers
Tim
On 26.08.2015 08:06, Uzzal wrote:
> I am extreamly sorry for my previous mail. Now its working.I forgot to
> loaded "latticeExtra" package.
>
> The plots I got ,it all have individual names . But every plot has 7
> variogram.is it possible to naming each variogram in each plot also
> like "20120301","20120302",..........."201203007"?
>
> Uzzal
>
> --- Original Message ---
> *From : * "Tim Appelhans"<tim.appelhans at gmail.com>
> *To : * "Uzzal"<uzzal at gist.ac.kr>
> *Date : * 2015/08/26 Wednesday AM 1:14:25
> *Subject : * Re: [R-sig-Geo] How to plot multiple semi-variogram
> from a single dataset efficiently in R?
>
> How's this:
>
> ### in order to use latticeCombineGrid() you need to use
> ##################
> ### library(devtools) to install library(Rsenal)
> ##########################
> # install.packages(devtools)
> # library(devtools)
> # install_github("environmentalinformatics-marburg/Rsenal")
> ###########################################################################
>
> library(sp)
> library(gstat)
> library(rgdal)
> library(automap)
> library(Rsenal)
> library(latticeExtra)
>
> seoul311 <- read.csv("Downloads/seoul1to7.csv")
> seoul311 <- na.omit(seoul311)
>
> ### first we split seoul311 by time into a list rather than
> subsetting manually
> seoul311_splt <- split(seoul311, seoul311$time)
>
> ### now we loop (using lapply()) over each seoul311_splt entry and
> calculate
> ### variogram using autofitVariogram and return the variogram plot
> vars <- lapply(seq(seoul311_splt), function(i) {
>
> dat <- seoul311_splt[[i]]
> coordinates(dat) <- ~LON+LAT
> proj4string(dat) <- "+proj=longlat +datum=WGS84"
> dat <- spTransform(dat, CRS("+proj=utm +north +zone=52
> +datum=WGS84"))
>
> variogram <- autofitVariogram(PM10 ~ 1, dat)
>
> plt <- plot(variogram, plotit = FALSE, asp = 1)
>
> ### in case you do not want to fix xlim and ylim to be identical
> ### for each plot just comment out the following line or change
> ### values as you see fit
> plt <- update(plt, xlim = c(-1000, 45000), ylim = c(0, 1000))
>
> return(plt)
> })
>
> ### now we actually have 23 * 7 variogram plots which we will combine
> ### into 23 hourly plots using latticeCombineGrid()
> hrs <- substr(names(seoul311_splt), 9, 10)
> dates <- unique(substr(names(seoul311_splt), 1, 8))
> hrs_unique <- unique(substr(names(seoul311_splt), 9, 10))
>
> plts_hrs <- lapply(seq(unique(hrs)), function(j) {
>
> indx <- hrs %in% unique(hrs)[j]
> hr_plt <- vars[indx]
>
> fin_plt <- latticeCombineGrid(hr_plt, layout = c(3, 3)) +
> layer(panel.text(x = 1000, y = 900, adj = c(0, 1),
> labels = dates[panel.number()]))
>
> fin_plt <- update(fin_plt, main = paste("Variogram for hour",
> hrs_unique[j]))
>
> return(fin_plt)
>
> })
>
> ### save each plot as .png
> ### NOTE: latttice plots need to be print()ed!!!
> for (i in seq(hrs_unique)) {
> png(paste0("plot_hr_", hrs_unique[i], ".png"),
> width = 25, height = 25, units = "cm", res = 300)
> print(plts_hrs[[i]])
> dev.off()
> }
>
>
> Is this what you need?
>
> Best
> Tim
>
> On 25.08.2015 06:19, Uzzal wrote:
>>
>> Hello Tim, How about your last weekend? By the way, you told me
>> to make you remember about my last problem. Good day.
>>
>> Uzzal
>>
>> --- Original Message ---
>> *From : * "Tim Appelhans"<tim.appelhans at gmail.com>
>> *To : * "Uzzal"<uzzal at gist.ac.kr>
>> *Date : * 2015/08/19 Wednesday PM 7:21:54
>> *Subject : * Re: [R-sig-Geo] How to plot multiple
>> semi-variogram from a single dataset efficiently in R?
>>
>> Uzzal,
>> this is surely possible. I will be on holidays until next
>> week so will not get back to you before then.
>> If you haven't heard from me by the end of next week, please
>> send me a reminder email as I will most likely have gotten
>> crried away with other things.
>>
>> Cheers
>> Tim
>>
>> On 18.08.2015 19:03, Uzzal wrote:
>>>
>>> Dear Tim, Thank you so much for your quick response. It
>>> helped me a lot. I can't resist myself to ask you my another
>>> query related to this. I don't know, If you mind then please
>>> tell me, I will ask in another email:
>>>
>>> My another query:
>>> According to your coad,
>>>
>>>
>>> plts_hrs[[1]]
>>> .
>>> .
>>> plts_hrs[[23]] give me the 23 plots individually with
>>> same title. If I want those 23 plots _with different
>>> title(also individual name of variogram in a plot)_
>>>
>>> by a single loop and those plots will be automatically
>>> saved in a folder, Is it possible in R?
>>>
>>> For example, First plot title would be "Variogram for 1.00 a.m
>>>
>>> And the 7 variograms title in the first plot would be like 1
>>> march , 2.00 march....7 march.
>>>
>>> Actually I am new in R and weak in loop operation.
>>>
>>> I tried to do it with dev.off () command. But I didn't get
>>> success.
>>> Could you please help me? Thanks a lot again.
>>>
>>> Orpheus
>>>
>>> --- Original Message ---
>>> *From : * "Tim Appelhans"<tim.appelhans at gmail.com>
>>> *To : * r-sig-geo at r-project.org
>>> *Cc : * uzzal at gist.ac.kr
>>> *Date : * 2015/08/17 Monday PM 6:49:00
>>> *Subject : * Re: [R-sig-Geo] How to plot multiple
>>> semi-variogram from a single dataset efficiently in R?
>>>
>>> Orpheus,
>>> here's one option to get what you want.
>>> The problem with fitting that many variograms is that if
>>> you want to specify each variogram individually (i.e.
>>> nugget, range, model etc.), there is no way to automate
>>> this with loops or thelike.
>>> You can, however, use library(automap) to automatically
>>> fit a variogram to your data. Then a possible solution
>>> could look like this:
>>>
>>>
>>> ### in order to use latticeCombineGrid() you need to use
>>> ##################
>>> ### library(devtools) to install library(Rsenal)
>>> ##########################
>>> # install.packages(devtools)
>>> # library(devtools)
>>> # install_github("environmentalinformatics-marburg/Rsenal")
>>> ###########################################################################
>>>
>>> library(sp)
>>> library(gstat)
>>> library(rgdal)
>>> library(automap)
>>> library(Rsenal)
>>>
>>> seoul311 <- read.csv("Downloads/seoul1to7.csv")
>>> seoul311 <- na.omit(seoul311)
>>>
>>> ### first we split seoul311 by time into a list rather
>>> than subsetting manually
>>> seoul311_splt <- split(seoul311, seoul311$time)
>>>
>>> ### now we loop (using lapply()) over each seoul311_splt
>>> entry and calculate
>>> ### variogram using autofitVariogram and return the
>>> variogram plot
>>> vars <- lapply(seq(seoul311_splt), function(i) {
>>>
>>> dat <- seoul311_splt[[i]]
>>> coordinates(dat) <- ~LON+LAT
>>> proj4string(dat) <- "+proj=longlat +datum=WGS84"
>>> dat <- spTransform(dat, CRS("+proj=utm +north +zone=52
>>> +datum=WGS84"))
>>>
>>> variogram <- autofitVariogram(PM10 ~ 1, dat)
>>>
>>> plt <- plot(variogram, plotit = FALSE, asp = 1)
>>>
>>> ### in case you do not want to fix xlim and ylim to be
>>> identical
>>> ### for each plot just comment out the following line
>>> or change
>>> ### values as you see fit
>>> plt <- update(plt, xlim = c(-1000, 45000), ylim = c(0,
>>> 1000))
>>>
>>> return(plt)
>>> })
>>>
>>> ### now we actually have 23 * 7 variogram plots which we
>>> will combine
>>> ### into 23 hourly plots using latticeCombineGrid()
>>> hrs <- substr(names(seoul311_splt), 9, 10)
>>>
>>> plts_hrs <- lapply(seq(unique(hrs)), function(j) {
>>>
>>> indx <- hrs %in% unique(hrs)[j]
>>> hr_plt <- vars[indx]
>>>
>>> return(latticeCombineGrid(hr_plt, layout = c(3, 3)))
>>>
>>> })
>>>
>>> ### plot for hour 1
>>> plts_hrs[[1]]
>>>
>>> ### plot for hour 23
>>> plts_hrs[[23]]
>>>
>>> ### ...
>>>
>>>
>>> HTH
>>>
>>> Best,
>>> Tim
>>>
>>>
>>> On 17.08.2015 09:43, Uzzal wrote:
>>>> Actually I asked this same question to some other forum
>>>> but unfortunate I didn't get the appropriate response.
>>>> But I am kind of struck with this problem. I am giving
>>>> the link of my problem previously posted in other
>>>> forum: (really sorry for that)
>>>> http://stackoverflow.com/questions/31762461/how-to-plot-multiple-semi-variogram-from-a-single-dataset-efficiently-in-r?noredirect=1#comment51767989_31762461
>>>>
>>>> I want variogram time wise. For example, thevariogram
>>>> for 1.00 am of 1 march to 7 march in one plot. That
>>>> means 7 variograms in one plot. in such a way there
>>>> will be 23 plot contains (23*7) variogram. Thanks in
>>>> adv! ance.
>>>>
>>>> Orpheus
>>>>
>>>>
>>>>
>>>> Uzzal Kumar Dash
>>>> Master's student
>>>> Air Quality & Climate Modeling Laboratory (AqCliMB)
>>>> School of Environmental Science and Engineering (SESE)
>>>> Gwangju Institute of Science and Technology (GIST)
>>>> 123 Cheomdan-gwagiro, Buk-gu, Gwangju 500-712
>>>> Republic of Korea
>>>>
>>>> web: http://aqclimb.gist.ac.kr/
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> R-sig-Geo mailing list
>>>> R-sig-Geo at r-project.org
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>>
>>> --
>>> #####################################
>>> Tim Appelhans
>>> Department of Geography
>>> Environmental Informatics
>>> Philipps Universität Marburg
>>> Deutschhausstraße 12
>>> 35032 Marburg (Paketpost: 35037 Marburg)
>>> Germany
>>>
>>> Tel +49 (0) 6421 28-25957
>>>
>>> http://environmentalinformatics-marburg.de/
>>>
>>>
>>>
>>>
>>> Uzzal Kumar Dash
>>> Master's student
>>> Air Quality & Climate Modeling Laboratory (AqCliMB)
>>> School of Environmental Science and Engineering (SESE)
>>> Gwangju Institute of Science and Technology (GIST)
>>> 123 Cheomdan-gwagiro, Buk-gu, Gwangju 500-712
>>> Republic of Korea
>>>
>>> web: http://aqclimb.gist.ac.kr/
>>>
>>>
>>
>> --
>> #####################################
>> Tim Appelhans
>> Department of Geography
>> Environmental Informatics
>> Philipps Universität Marburg
>> Deutschhausstraße 12
>> 35032 Marburg (Paketpost: 35037 Marburg)
>> Germany
>>
>> Tel +49 (0) 6421 28-25957
>>
>> http://environmentalinformatics-marburg.de/
>>
>>
>>
>>
>> Uzzal Kumar Dash
>> Master's student
>> Air Quality & Climate Modeling Laboratory (AqCliMB)
>> School of Environmental Science and Engineering (SESE)
>> Gwangju Institute of Science and Technology (GIST)
>> 123 Cheomdan-gwagiro, Buk-gu, Gwangju 500-712
>> Republic of Korea
>>
>> web: http://aqclimb.gist.ac.kr/
>>
>>
>
> --
> #####################################
> Tim Appelhans
> Department of Geography
> Environmental Informatics
> Philipps Universität Marburg
> Deutschhausstraße 12
> 35032 Marburg (Paketpost: 35037 Marburg)
> Germany
>
> Tel +49 (0) 6421 28-25957
>
> http://environmentalinformatics-marburg.de/
>
>
>
>
>
>
--
#####################################
Tim Appelhans
Department of Geography
Environmental Informatics
Philipps Universität Marburg
Deutschhausstraße 12
35032 Marburg (Paketpost: 35037 Marburg)
Germany
Tel +49 (0) 6421 28-25957
http://environmentalinformatics-marburg.de/
[[alternative HTML version deleted]]
More information about the R-sig-Geo
mailing list