Odpowiedź @thelatemail to najlepsze i najprostsze rozwiązanie, jakie widziałem w tym problemie. Aby było to bardziej uniwersalne, lepiej jest usunąć wielokąty według nazwy. Dzieje się tak dlatego, że w zależności od limitów, które dajesz pierwsze wywołanie map(), indeksy nazw wieloboków mogą być różne.
library(maps)
library(mapproj)
library(mapdata)
mapnames <- map("world2Hires", xlim=c(120, 260), ylim=c(-60, 40),
fill=TRUE, plot=FALSE)
mapnames2 <- map("world2Hires", xlim=c(100, 200), ylim=c(-20, 60),
fill=TRUE, plot=FALSE)
mapnames$names[10]
[1] "Mali"
mapnames2$names[10]
[1] "Thailand"
Istnieje 8 krajów, które są przecięte na południku zerowym: Wielka Brytania, Francja, Hiszpania, Algieria, Mali, Burkina Faso, Ghana, Togo. Łącząc te nazwy krajów z mapnames$names
można usunąć wielokątów niezależnie od oryginalnego stopniu:
remove <- c("UK:Great Britain", "France", "Spain", "Algeria", "Mali",
"Burkina Faso", "Ghana", "Togo")
map("world2Hires", regions=mapnames$names[!(mapnames$names %in% remove)],
xlim=c(120, 260),
ylim=c(-60, 40),
boundary=TRUE,
interior=TRUE,
fill=TRUE
)
map.axes()
Można również użyć Grepl(), ale dlatego, wielokąty są nazwane heirarchically, można usunąć niektóre podrzędne wielokątów narodów w pytaniu. Na przykład mapnames$names[grepl("UK", mapnames$names)]
zwraca 34 dopasowania.
Zaproponowałbym to jako edycję, ale nie mam jeszcze uprawnień.
Dla innych poszukujących rozwiązania tego problemu, istnieje kilka innych odpowiedzi. Aby uzyskać rozwiązanie, które pozostawia nienaruszone wielokątów, umożliwiając globalną mapę skupioną na Pac, zobacz http://stackoverflow.com/a/10749877/3897439 od Josh O'Brien. Aby podzielić wielokąty w pobliżu linii danych, zobacz http://stackoverflow.com/a/5538551/3897439 by Joris Meys. –