1

I am unsuccessfully trying to plot lines on a world map with Mollweide projection. I also plotted points on that same map, and it worked out fine. For the lines, I tried to adapt this example to my needs: http://flowingdata.com/2011/05/11/how-to-map-connections-with-great-circles/. I failed with the pre-test (Step 4 in the ex.) already. In the following code, the line is supposed to connect Kenya and Australia. It runs without errors, but there's no line in the output. (I also tested the example without mapproj and the line is there.)

library("maps")
library("mapproj")
library("geosphere")

map("world",proj="mollweide", orientation= c(90,0,0), fill=TRUE, col="white", bg="lightblue")

lon_ke <- 38
lat_ke <- 1

lon_aus <- 133
lat_aus <- -27

inter <- gcIntermediate(c(mapproject(lon_ke,lat_ke), proj="mollweide", orientation= c(90,0,0)),
                        c(mapproject(lon_aus,lat_aus), proj="mollweide", orientation= c(90,0,0)),
                        n=50, addStartEnd=TRUE)
lines(inter)
pogibas
  • 27,303
  • 19
  • 84
  • 117
noschmi
  • 11
  • 2
  • I would like to add that the only usage of mapproj and gcIntermediate in the same code I found here: Rahlf, Thomas. Data Visualisation with R. Springer, 2017, doi:10.1007/978-3-319-49751-8, p. 345f. You can download the script [here](http://extras.springer.com/2017/978-3-319-49750-1/scriptsanddata.zip) --> maps_world_great_circles.r. I find this example overly complicated, and it's not running for me, in line 14 `In map(proj = myProj.type, orient = myProj.orient, wrap = T) : projection failed for some data` – noschmi Oct 23 '17 at 13:01

1 Answers1

0

I found a solution to my problem, based on Thomas Rahlf's book (see comment). Here's my script (it helps visualizing where authors publish articles).

library(maps) 
library(geosphere)
library(mapproj)

#load data
locations <- read.csv("articles-authors-locations.csv", header=TRUE, check.names = FALSE)

#plot map with Mollweide projection
myProj.type<-"mollweide"
myProj.orient<-c(90,0,0)
x<-map(proj=myProj.type,orient=myProj.orient,wrap=T,fill=TRUE, col="white", bg="lightblue",xlim=range(locations$ArticleLong),ylim=range(locations$ArticleLat)
       ) 

#plot jittered points for authors' locations
myStartP<-mapproject(jitter(locations$AuthorLong,amount=3),jitter(locations$AuthorLat, amount=1),proj=myProj.type,orient=myProj.orient)
points(myStartP,col="darkblue",pch=20,cex=1)

#set transparent colors
myTColour<-rgb(0,0,0,50,maxColorValue=255)
red_transp <- adjustcolor("red", alpha.f = 0.4) 

#plot lines and jittered points, connecting authors' and articles locations
for (i in 1:nrow(locations))
{
myGC1<-gcIntermediate(c(locations$AuthorLong[i],locations$AuthorLat[i]),c(locations$ArticleLong[i],locations$ArticleLat[i]),addStartEnd=T, n=50)
moll<-mapproject(myGC1[,1],myGC1[,2],projection=myProj.type,orientation=myProj.orient) 
lines(moll$x,moll$y,lwd=2.5,col=myTColour)
myDestP<-mapproject(
  jitter(locations$ArticleLong[i], amount=3),
  jitter(locations$ArticleLat[i], amount=1),
  proj=myProj.type,orient=myProj.orient)
points(myDestP,col=red_transp,pch=20,cex=1)
}
noschmi
  • 11
  • 2