# simple script para crear un mapa ########################################################################################## library(ggmap) a=geocode("Vitoria") ###> los geocode localizan calles, ciudades, etc.... mapa=get_map(location=a,zoom=13,maptype="satellite") ###> los tipos de mapas son variados mapa_1=ggmap(mapa) ###> si quiero verlo en pantalla simplemente hare mapa_1 en la linea de comandos ggsave(mapa_1,file="C:\\USO_R\\mapas\\vitoria.png") # modificación dando unas coordenadas mapa=get_map(location=c(lon=-2.658,lat=42.85),zoom=13,maptype="toner") mapa_1=ggmap(mapa) # modificación dando una posicion mapa <- get_map("Vitoria",zoom=12,maptype="terrain",source="google") Mapa_1=ggmap(mapa) #### otros maptype son "terrain", "roadmap" , "hybrid" ,"toner-2011" ########################################################################################### # simple script para crear un mapa y escribir sobre el ###################################################### library(ggmap) mapa=get_map(location=c(lon=-2.658,lat=42.85),zoom=13,maptype="terrain") mapa_2=ggmap(mapa)+annotate("text", x=-2.658, y=42.85, label = "GASTEIZ-VITORIA", colour = "red", size =10) mapa_2 # simple script para crear un mapa y hacer un rectangulo sobre el ################################################################### library(ggmap) mapa=get_map(location=c(lon=-2.658,lat=42.85),zoom=13,maptype="terrain") mapa_2=ggmap(mapa)+annotate("rect", xmin=-2.675, ymin=42.83, xmax=-2.650, ymax=42.85, col="red" ,fill="white") mapa_2 # para dibujar segmentos haremos ##################################################################### library(ggmap) mapa=get_map(location=c(lon=-2.658,lat=42.85),zoom=13,maptype="terrain") mapa_2=ggmap(mapa)+annotate("segment", x=-2.675, xend=-2.650, y=42.83, yend=42.85,colour="blue", size = 1.5) mapa_2 ####> arrow = arrow(length=unit(0.3,"cm")) se puede añadir a annotate para acabar en flecha # podemos sumar varios annotate para finalmente hacer un mapa (aquí el ejemplo de uno solo añadido que es la recta) ##################################################################################################################### library(ggmap) mapa=get_map(location=c(lon=-2.658,lat=42.85),zoom=13,maptype="terrain") mapa_2=ggmap(mapa)+labs(x = "Longitude", y = "Latitude") + ggtitle(" EXAMPLE") mapa_2=mapa_2+annotate("segment", x=-2.675, xend=-2.650, y=42.83, yend=42.85,colour="blue", size = 1.5) mapa_2 # para hacer un box donde se dibujara el mapa (siempre lo hace cuadrado¡¡¡¡) ############################################################################ library(ggmap) lat=c(42.81,42.89) long=c(-2.71,-2.640) bbox=make_bbox(long,lat,f=0.05) mapa=get_map(bbox,maptype="satellite") mapa_2=ggmap(mapa) mapa_2 # con la libreria RgoogleMap podremos incluso calcular un zoom para usarlo despues en get_map ################################################################################################# library(RgoogleMaps) ## dada una lista de puntos ################## lat = c(40.702147,40.718217,40.711614) lon = c(-74.012318,-74.015794,-73.998284) ############################################## center = c(mean(lon), mean(lat)) z=min(MaxZoom(range(lat), range(lon))) mapa=get_map(center,zoom=z,maptype="satellite") mapa_2=ggmap(mapa) mapa_2 # Observaciones coloreadas con una escala de colores continuos interpolados (sin extrapolacion) ################################################################################################ library(akima) library(ggmap) library(loa) ###> donde se encuentra los datos data(lat.lon.meuse,package="loa",envir=environment()) ###> neesito una secuencia de puntos x,y para interpolar con interp de akima xo=seq(min(lat.lon.meuse$longitude),max(lat.lon.meuse$longitude),length=90) yo=seq(min(lat.lon.meuse$latitude),max(lat.lon.meuse$latitude),length=90) a=interp(lat.lon.meuse$longitude,lat.lon.meuse$latitude,lat.lon.meuse$cadmium,xo,yo,linear=TRUE) a1=interp2xyz(a) ###> aqui paso de la variable "a" tipo lista de datos interpolados a una matriz de datos de 3 columnas (x,y,z) "a1" a1=as.data.frame(a1) new_a=a1[!is.na(a1$z),] ###> aqui elimino los datos na de la zona exterior donde no se puede interpolar new_a=as.data.frame(new_a) mapa=get_map(location=c(5.743689,50.9757), zoom=13) mapa_1=ggmap(mapa) mapa_2=mapa_1+stat_summary_2d(geom ="tile",bins =100,data=new_a,aes(x=new_a$x,y=new_a$y,z=new_a$z),alpha=0.5) mapa_2=mapa_2+scale_fill_gradient(low = "yellow", high = "red", name="pb(mg/m3)") ###>los bins indican el numero de cuadraditos a poner en el dibujo # Observaciones individuales coloreadas de forma graduada en funcion del valor de la observación ################################################################################################ library("loa") library("ggmap") data(lat.lon.meuse,package="loa",envir=environment()) mean(lat.lon.meuse[,1]) [1] 50.9747 mean(lat.lon.meuse[,2]) [1] 5.743689 map <- get_map(location=c(5.743689,50.9757), zoom=13) mapa_1=ggmap(map) mapa_4=mapa_1 + geom_point(data=as.data.frame(lat.lon.meuse), aes(x=longitude,y=latitude,color=lead), size=3.5)+scale_color_gradientn(colours=rev(heat.colors(5))) # Cuadrados representando observaciones coloreados con un rango finito de valores según la observación ###################################################################################################### library("ggmap") library("loa") data(lat.lon.meuse,package="loa",envir=environment()) map <- get_map(location=c(5.743689,50.9757), zoom=13) mapa_1=ggmap(map) mapa_2 <- mapa_1 + stat_summary_2d(geom = "tile",bins = 50,data=lat.lon.meuse, aes(x = longitude, y = latitude, z = lead), alpha=0.5) mapa_3<- mapa_2 + scale_fill_gradient(low = "yellow", high = "red", guide = guide_legend(title = "LEAD")) +xlab("") + ylab("") # Isocontornos interpolados en una región rectangular a partir de observaciones (extrapolación) ################################################################################################ library(akima) library(ggmap) library(loa) data(lat.lon.meuse,package="loa",envir=environment()) xo=seq(min(lat.lon.meuse$longitude),max(lat.lon.meuse$longitude),length=90) yo=seq(min(lat.lon.meuse$latitude),max(lat.lon.meuse$latitude),length=90) a=interp(lat.lon.meuse$longitude,lat.lon.meuse$latitude,lat.lon.meuse$cadmium,xo,yo,linear=FALSE,extrap=TRUE) a2=interp2xyz(a) a2=as.data.frame(a2) map <- get_map(location=c(5.743689,50.9757), zoom=13) mapa_1=ggmap(map) mapa_2=mapa_1+ geom_tile(data=a2,aes(x=a2$x,y=a2$y,fill=a2$z),alpha=0.4)+scale_fill_gradientn(guide="none",colours=rev(heat.colors(10)))+stat_contour(data=a2,aes(x=a2$x,y=a2$y,z=a2$, color=..level..), geom="path", size=1)+scale_color_gradientn(colours=rev(heat.colors(10)))