Hi:
I am practicing with the attached shapefile and was wondering
if I can get some help. Haven't used 'rgdal' and 'maptools' much
but it appears to be a great way bring map data into R.
Please take a look at the comments and let me know if I need to
explain better what I am trying to accomplish.

library(rgdal)
library(maptools)
library(ggplot2)
dsn="C:/Documents and Settings/fcarrillo/Desktop/Software/R Scripts
and Datasets/NCTC/Data Analisys II/Data 4 Data Analysis II March 2009-
March2010/Data"
wolves.map <- readOGR(dsn=dsn, layer="PNW_wolf_habitat_grid")
class(wolves.map)
dim(wolves.map)
head(wolves.map,1)
names(wolves.map)
gpclibPermit()
wolves.ds <- fortify(wolves.map)
head(wolves.ds);tail(wolves.ds)
# Shapefile of 5 states
wolves.plot <- ggplot(wolves.ds,aes(long,lat,group=group)) +
geom_polygon(colour='white',fill='lightblue')
wolves.plot
# How to show the state borders of Washington, Oregon, Idaho, Montana
and Wyoming on map?

# Subset from wolves to create a logistic regression model based on
WOLVES_99 and then apply to all the 5 states
# Remove the WOLVES_99 2(two value) and use "one" for presence and
"zero" for absence to end up with 153 records.
#wolfsub<-subset(wolves,subset=!(WOLVES_99==2))
#wolfsub <- subset(wolves.map,WOLVES_99!=2)
wolfsub <- wolves.map[!wolves.map$WOLVES_99 %in% 2,];wolfsub
dim(wolfsub)
# 42 = Forest, 51 = Shrub, > 81 = Agriculture
wolfsub$Forest<-ifelse(wolfsub$MAJOR_LC==42,1,0)
wolfsub$Shrub<-ifelse(wolfsub$MAJOR_LC==51,1,0)
wolfsub$Agriculture<-ifelse(wolfsub$MAJOR_LC>81,1,0)
names(wolfsub);dim(wolfsub)
# create the model
mod1<-glm(WOLVES_99~RD_DENSITY+Forest+Shrub
+Agriculture,family=binomial,data=wolfsub)
summary(mod1)
wolfsub$pred99<-fitted(mod1)
names(wolfsub)
#fitted(mod1)
wolfsub$pred99

# Add the wolfsub data to the map to see the map
wolfsub <- fortify(wolfsub);names(wolfsub)
area_mod <- wolves.plot + geom_polygon(data=wolfsub,aes(fill=????))
#Want to fill by WOLVES_99 but is gone #after fortify
area_mod
#Not sure how to proceed from here to fit the 'mod1' model to all
#the 5 states.

 


>
>From: Tom Hopper <tomhop...@gmail.com>
>To: Felipe Carrillo <mazatlanmex...@yahoo.com>
>Sent: Tue, June 22, 2010 9:40:19 PM
>Subject: Re: Plotting Data on a Map
>
>Felipe, 
>
>
>I am just learning these tools, too, so it may be a good learning opportunity 
>for both of us. Please send me the files and I will try to put it together and 
>plot it.
>
>
>Regards,
>
>
>Tom
>
>
>On Mon, Jun 21, 2010 at 11:57 PM, Felipe Carrillo <mazatlanmex...@yahoo.com> 
>wrote:
>
>Hi Tom:
>>I am just starting to use rgdal and maptools but I have a long way to go. I 
>>went to a training
>>a couple of weeks ago and the instructor showed us a csv file and a shapefile 
>>with wolf data from
>>a national park in the midwest. I am trying to put all of the csv data and 
>>some predicted data 
>>on a map using ggplot2 but I am stuck with it. I am just trying to do this 
>>example because I want to
>>see if I can apply this example to fish. Let me know if interested.
>>
>>
>>Felipe D. Carrillo
>>Supervisory Fishery Biologist
>>Department of the Interior
>>US Fish & Wildlife Service
>>California, USA
>>
>>
>>
>>>
>>>From: Tom Hopper <tomhop...@gmail.com>
>>>To: ggpl...@googlegroups.com
>>>Sent: Mon, June 21, 2010 2:27:14 PM
>>>Subject: Re: Plotting Data on a Map
>>>
>>>
>>>Hadley, 
>>>
>>>
>>>Thank you!
>>>
>>>
>>>I doing this, I've encountered an encountered and unexpected difference 
>>>between the  graphs on my Mac and my Windows machines. It appears that there 
>>>is a default setting different between the two programs.
>>>
>>>
>>>Using the same commands on both Mac and Windows, I found that the polygon 
>>>borders are plotted on the Mac, but not on Windows, so on the Mac I see the 
>>>country borders, but on Windows I do not. On the Mac, it looks like the 
>>>default for geom_polygon is something like size = 0.01, colour = "gray50". 
>>>On Windows, it's more like colour = alpha("gray50", 0), though in fact the 
>>>visibility of polygon borders seems to be independent of both the size and 
>>>colour settings.
>>>
>>>
>>>Regards,
>>>
>>>
>>>Tom
>>>
>>>
>>>On Mon, Jun 21, 2010 at 3:00 AM, Hadley Wickham <had...@rice.edu> wrote:
>>>
>>>Hi Tom,
>>>>
>>>>Thanks for contribution! Ploting map data is never easy and its always
>>>>nice to see a success story.
>>>>
>>>>Hadley
>>>>
>>>>
>>>>On Saturday, June 19, 2010, Tom Hopper <tomhop...@gmail.com> wrote:
>>>>> Well, it turns out that, in my haste to thank Fernando, I posted code 
>>>>> with some typos. I have also had a chance to test it on my Mac, and found 
>>>>> that fortify() was throwing an error ("Error in nchar(ID) : invalid 
>>>>> multibyte string 1"). I have added a call, currently commented out, to 
>>>>> Sys.setlocale() to fix this. I have tested the code below under R 2.11.1 
>>>>> on both Windows XP and Mac OS X 10.5.8, with the latest packages 
>>>>> installed. In fact, the plot looks better in the Mac Quartz window.
>>>>>
>>>>>
>>>>> Sorry for the previous errors.
>>>>>
>>>>>
>>>>> # Download electricity generation data from 
>>>>> http://tonto.eia.doe.gov/cfapps/ipdbproject/iedindex3.cfm?tid=2&pid=2&aid=12&cid=&syid=2004&eyid=2008&unit=BKWH
>>>>>
>>>>>
>>>>> # Download new map data from 
>>>>> http://thematicmapping.org/downloads/world_borders.php
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> # Bring the thematicmapping data into R
>>>>> library("rgdal")
>>>>> world.map <- readOGR(dsn="C:/", layer="TM_WORLD_BORDERS-0.3")
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> # Save the map data as an R object
>>>>> save(world.map, "worldmap.rdata")
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> # As needed, reload the data
>>>>> library(maptools)
>>>>> gpclibPermit()
>>>>> load("worldmap.rdata")
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> # Prepare the world.map data for ggplot2
>>>>> library(ggplot2)
>>>>> # On some setups, fortify throws "Error in nchar(ID)"
>>>>> # in that case, use setlocale
>>>>> # Sys.setlocale("LC_ALL", locale = "C")
>>>>> world.ggmap <- fortify(world.map, region = "NAME")
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> # Load the electricity generation data and clean it up to match with 
>>>>> world.ggmape
>>>>> elect.gen.tot <- 
>>>>> read.csv("Total_Electricity_Net_Generation_(Billion_Kilowatthours).csv", 
>>>>> sep = ",", dec = ".")
>>>>>
>>>>>
>>>>> names(elect.gen.tot) <- c("id", "y2004", "y2005", "y2006", "y2007", 
>>>>> "y2008")
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> # make sure the id column is in the same case for both sets
>>>>> elect.gen.tot$id <- tolower(elect.gen.tot$id)
>>>>>
>>>>>
>>>>> world.ggmap$id <- tolower(world.ggmap$id)
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> # merge the two data sets
>>>>> world.ggmape <- merge(world.ggmap, elect.gen.tot, by = "id", all = TRUE)
>>>>>
>>>>>
>>>>> world.ggmape <- world.ggmape[order(world.ggmape$order), ]
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> # NOTE: at this point, the electricity data country names do not match 
>>>>> 100%
>>>>> # with the thematicmapping country names (column "id").
>>>>> # print out the country names using
>>>>> # table(world.ggmape$id)
>>>>> # and do a search for values of 1. Then find the corresponding country
>>>>> # name with values > 1 and rename the country names in the electricity
>>>>> # generation data to match (e.g. "Tanzania" becomes "united republic of
>>>>> # tanzania").
>>>>> # Once this data cleaning operation is complete, repeat the above steps
>>>>> # starting with reading data into elect.gen.tot.
>>>>>
>>>>>
>>>>> # Plot the data using ggplot2
>>>>> world.plot <- ggplot(data = world.ggmape, aes(x = long, y = lat, group = 
>>>>> group))
>>>>>
>>>>>
>>>>> world.plot + geom_polygon(aes(fill = y2007)) + labs(x = "Longitude", y = 
>>>>> "Latitude", fill = "TWh") + opts(title = "Net Electricity Generation in 
>>>>> TWh for 2007\nData from EIA International Energy Statistics, 2008")
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Jun 18, 2010 at 11:39 AM, Tom Hopper <tomhop...@gmail.com> wrote:
>>>>> Fernando,
>>>>>
>>>>> That worked perfectly; thank you!
>>>>>
>>>>> There were some mismatches in the country names, as you noted, but after 
>>>>> cleaning up the electricity generation data everything looks great. I've 
>>>>> updated the electricity generation data with the cleaned version and 
>>>>> posted a graph to box.net.
>>>>> the graph: http://www.box.net/tomhopper/1/22918943/452739712
>>>>>
>>>>> Below, for reference, is the complete R code.
>>>>>
>>>>> Thank you, and best regards,
>>>>>
>>>>> Tom
>>>>>
>>>>> # Download electricity generation data from 
>>>>> http://tonto.eia.doe.gov/cfapps/ipdbproject/iedindex3.cfm?tid=2&pid=2&aid=12&cid=&syid=2004&eyid=2008&unit=BKWH
>>>>> # Download new map data from 
>>>>> http://thematicmapping.org/downloads/world_borders.php
>>>>>
>>>>> # Bring the thematicmapping data into R
>>>>> library(maptools)
>>>>> gpclibPermit()
>>>>> library("rgdal")
>>>>> world.map <- readOGR(dsn="C:/", layer="TM_WORLD_BORDERS-0.3")
>>>>>
>>>>> # Save the map data as an R object for later use
>>>>> save(world.map, "worldmap.rdata")
>>>>>
>>>>> # As needed, reload the data
>>>>> # load("worldmap.rdata")
>>>>>
>>>>> # Prepare the world.map data for ggplot2
>>>>> library(ggplot2)
>>>>> world.ggmap <- fortify(world.map, region = "NAME")
>>>>>
>>>>> # Load the electricity generation data and clean it up to match with 
>>>>> world.ggmape
>>>>> elect.gen.tot <- 
>>>>> read.csv("Total_Electricity_Net_Generation_(Billion_Kilowatthours).csv",
>>>>>      sep = ",", dec = ".")
>>>>> names(elect) <- c("id", "y2004", "y2005", "y2006", "y2007", "y2008")
>>>>>
>>>>> elect.gen.tot$id <- tolower(elect.gen.tot$id)
>>>>>
>>>>> # merge the two data sets
>>>>> world.ggmape <- merge(world.ggmap, elect.gen.tot, by = "id", all = TRUE)
>>>>> world.ggmape <- world.ggmape[order(world.ggmape$order), ]
>>>>>
>>>>> # NOTE: at this point, the electricity data country names may not match 
>>>>> 100%
>>>>> # with the thematicmapping country names (column "id").
>>>>> # print out the country names using
>>>>> # table(world.ggmape$id)
>>>>> # and do a search for values of 1. Then find the corresponding country
>>>>> # name with values > 1 and rename the country names in the electricity
>>>>> # generation data to match (e.g. "Tanzania" becomes "United Republic of
>>>>> # Tanzania").
>>>>> # Once this data cleaning operation is complete, repeat the above steps
>>>>> # starting with reading data into elect.gen.tot.
>>>>>
>>>>> # Plot the data using ggplot2
>>>>> world.plot <- ggplot(data = world, aes(x = long, y = lat, group = group))
>>>>> world.plot + geom_polygon(aes(fill = y2007)) +
>>>>>      labs(x = "Longitude", y = "Latitude", fill = "TWh") +
>>>>>      opts(title = "Net Electricity Generation in TWh for 2007\nData from 
>>>>> EIA International Energy Statistics, 2008")
>>>>>
>>>>>
>>>>> On Fri, Jun 18, 2010 at 2:10 AM, fernando <fgtabo...@gmail.com> wrote:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Hi Tom,
>>>>>
>>>>>
>>>>>
>>>>> I think fortify can help you in translating the sp object to a
>>>>> data.frame. Then you can use merge to join the two tables. The code bellow
>>>>> illustrates this, although I think there are some problems in matching 
>>>>> country
>>>>> names. Another issue is that if you add coord_map(), something strange 
>>>>> happens
>>>>> with Antarctica (maybe a problem in shapefile order?).
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>
>>>>> You received this message because you are subscribed to the ggplot2 
>>>>> mailing list.
>>>>> Please provide a reproducible example: http://gist.github.com/270442
>>>>>
>>>>> To post: email ggpl...@googlegroups.com
>>>>> To unsubscribe: email ggplot2+unsubscr...@googlegroups.com
>>>>> More options: http://groups.google.com/group/ggplot2
>>>>>
>>>>
>>>>
>>>>--
>>>>Assistant Professor / Dobelman Family Junior Chair
>>>>Department of Statistics / Rice University
>>>>http://had.co.nz/
>>>>
>>>-- 
>>>
>>>You received this message because you are subscribed to the ggplot2 mailing 
>>>list.
>>>Please provide a reproducible example: http://gist.github.com/270442
>>> 
>>>To post: email ggpl...@googlegroups.com
>>>To unsubscribe: email ggplot2+unsubscr...@googlegroups.com
>>>More options: http://groups.google.com/group/ggplot2
>>>
>>
>


      
        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to