Miluji Sb
2019-Feb-18 08:57 UTC
[R] Plot coordinates on world map with Robinson CRS - ggplot2
Dear all, I am trying to plot coordinates on a world map with Robinson CRS. While the world map is generated without any issues, when I try to plot the points - I only get a single point. The code I am using and the coordinates data is below. What am I doing wrong? Any help/suggestions will be highly appreciated. library(data.table) library(foreign) library(readstata13) library(rgdal) library(maptools) library(ggplot2) library(dplyr) load(url(" https://github.com/valentinitnelav/RandomScripts/blob/master/NaturalEarth.RData?raw=true ")) PROJ <- "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs" NE_countries_rob <- spTransform(NE_countries, CRSobj = PROJ) NE_graticules_rob <- spTransform(NE_graticules, CRSobj = PROJ) NE_box_rob <- spTransform(NE_box, CRSobj = PROJ) # project long-lat coordinates for graticule label data frames # (two extra columns with projected XY are created) prj.coord <- project(cbind(lbl.Y$lon, lbl.Y$lat), proj=PROJ) lbl.Y.prj <- cbind(prj.coord, lbl.Y) names(lbl.Y.prj)[1:2] <- c("X.prj","Y.prj") prj.coord <- project(cbind(lbl.X$lon, lbl.X$lat), proj=PROJ) lbl.X.prj <- cbind(prj.coord, lbl.X) names(lbl.X.prj)[1:2] <- c("X.prj","Y.prj") m <- ggplot() + # add Natural Earth countries projected to Robinson, give black border and fill with gray geom_polygon(data=NE_countries_rob, aes(long,lat, group=group), colour="black", fill="gray80", size = 0.25) + # Note: "Regions defined for each Polygons" warning has to do with fortify transformation. Might get deprecated in future! # alternatively, use use map_data(NE_countries) to transform to data frame and then use project() to change to desired projection. # add Natural Earth box projected to Robinson geom_polygon(data=NE_box_rob, aes(x=long, y=lat), colour="black", fill="transparent", size = 0.25) + # add graticules projected to Robinson geom_path(data=NE_graticules_rob, aes(long, lat, group=group), linetype="dotted", color="grey50", size = 0.25) + # add graticule labels - latitude and longitude geom_text(data = lbl.Y.prj, aes(x = X.prj, y = Y.prj, label = lbl), color="grey50", size=2) + geom_text(data = lbl.X.prj, aes(x = X.prj, y = Y.prj, label = lbl), color="grey50", size=2) + # the default, ratio = 1 in coord_fixed ensures that one unit on the x-axis is the same length as one unit on the y-axis coord_fixed(ratio = 1) + geom_point(data=df, aes(x=lon, y=lat), colour="Deep Pink", fill="Pink",pch=21, size=2, alpha=I(0.7)) # remove the background and default gridlines theme_void() ## coordinates dataframe dput(df) structure(list(lon = c(2.67569724621467, 17.5766416259819, 28.4126232192772, 23.8147674538232, 29.8917589327105), lat = c(28.1503115976162, -12.3388787380201, 9.78891068739477, -22.1873831176644, -3.36546931479253 )), class = "data.frame", row.names = c(NA, -5L)) Sincerely, Milu [[alternative HTML version deleted]]
Jeff Newmiller
2019-Feb-18 09:33 UTC
[R] Plot coordinates on world map with Robinson CRS - ggplot2
This is the wrong place for this question. https://stat.ethz.ch/mailman/listinfo/r-sig-geo On February 18, 2019 12:57:38 AM PST, Miluji Sb <milujisb at gmail.com> wrote:>Dear all, > >I am trying to plot coordinates on a world map with Robinson CRS. While >the >world map is generated without any issues, when I try to plot the >points - >I only get a single point. > >The code I am using and the coordinates data is below. What am I doing >wrong? Any help/suggestions will be highly appreciated. > >library(data.table) >library(foreign) >library(readstata13) >library(rgdal) >library(maptools) >library(ggplot2) >library(dplyr) > >load(url(" >https://github.com/valentinitnelav/RandomScripts/blob/master/NaturalEarth.RData?raw=true >")) > >PROJ <- "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 >+units=m +no_defs" > >NE_countries_rob <- spTransform(NE_countries, CRSobj = PROJ) >NE_graticules_rob <- spTransform(NE_graticules, CRSobj = PROJ) >NE_box_rob <- spTransform(NE_box, CRSobj = PROJ) > ># project long-lat coordinates for graticule label data frames ># (two extra columns with projected XY are created) >prj.coord <- project(cbind(lbl.Y$lon, lbl.Y$lat), proj=PROJ) >lbl.Y.prj <- cbind(prj.coord, lbl.Y) >names(lbl.Y.prj)[1:2] <- c("X.prj","Y.prj") > >prj.coord <- project(cbind(lbl.X$lon, lbl.X$lat), proj=PROJ) >lbl.X.prj <- cbind(prj.coord, lbl.X) >names(lbl.X.prj)[1:2] <- c("X.prj","Y.prj") > >m <- ggplot() + > # add Natural Earth countries projected to Robinson, give black border >and fill with gray > geom_polygon(data=NE_countries_rob, aes(long,lat, group=group), >colour="black", fill="gray80", size = 0.25) + > # Note: "Regions defined for each Polygons" warning has to do with >fortify transformation. Might get deprecated in future! > # alternatively, use use map_data(NE_countries) to transform to data >frame and then use project() to change to desired projection. > # add Natural Earth box projected to Robinson > geom_polygon(data=NE_box_rob, aes(x=long, y=lat), colour="black", >fill="transparent", size = 0.25) + > # add graticules projected to Robinson > geom_path(data=NE_graticules_rob, aes(long, lat, group=group), >linetype="dotted", color="grey50", size = 0.25) + > # add graticule labels - latitude and longitude > geom_text(data = lbl.Y.prj, aes(x = X.prj, y = Y.prj, label = lbl), >color="grey50", size=2) + > geom_text(data = lbl.X.prj, aes(x = X.prj, y = Y.prj, label = lbl), >color="grey50", size=2) + > # the default, ratio = 1 in coord_fixed ensures that one unit on the >x-axis is the same length as one unit on the y-axis > coord_fixed(ratio = 1) + > geom_point(data=df, > aes(x=lon, y=lat), colour="Deep Pink", > fill="Pink",pch=21, size=2, alpha=I(0.7)) > # remove the background and default gridlines > theme_void() > >## coordinates dataframe >dput(df) >structure(list(lon = c(2.67569724621467, 17.5766416259819, >28.4126232192772, >23.8147674538232, 29.8917589327105), lat = c(28.1503115976162, >-12.3388787380201, 9.78891068739477, -22.1873831176644, >-3.36546931479253 >)), class = "data.frame", row.names = c(NA, -5L)) > >Sincerely, > >Milu > > [[alternative HTML version deleted]] > >______________________________________________ >R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >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.-- Sent from my phone. Please excuse my brevity.