[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