Нанесение точек на существующий батиметрический / топографический участок? - PullRequest
0 голосов
/ 09 июня 2019

Я пытаюсь добавить второй набор данных в виде географических точек к графику ggmap. У меня уже есть батиметрические / топографические данные, примененные к карте с использованием функций geom_contour и geom_raster. Но каждый раз, когда я добавляю функцию geom_point, я получаю это сообщение: «Дискретное значение подается в непрерывную шкалу»

Вот как выглядит мой фрейм данных о географических координатах (Coords):

Long      Lat                             Type
1  155.5910 19.93401               Not geo-referenced
2  155.4998 19.83302               Not geo-referenced
3  155.2000 19.52440               Not geo-referenced
4  155.6302 20.00934               Geo-referenced
5  155.6623 19.81197               Not geo-referenced
6  155.5619 19.88102               Geo-referenced

Как я получил батиметрические данные (НЕ относится к этому вопросу)

bathydata <- getNOAA.bathy(lon1 = -180, lon2 = -154.5, lat1 = 29.3, lat2 =7, resolution = 7, antimeridian=FALSE)
bathydata <- as.matrix(bathydata)
class(bathydata) <- "matrix"
result1<- as.data.frame(bathydata)
result2<- rownames_to_column(result1, var = "lon")
result3<- gather(result2, lat, value, -1)
finalBathy<- mutate_all(result3, list(as.numeric))

Вот как выглядит мой батиметрический фрейм данных (finalBathy):

lon       lat value
1     -179.9417  7.058333 -5697
2     -179.8252  7.058333 -5582
3     -179.7088  7.058333 -5322
4     -179.5924  7.058333 -5708
5     -179.4759  7.058333 -5791
6     -179.3595  7.058333 -5781

Мой код

baseArchipelago = get_map(location = c(-180, 7, -154.5, 29.3), zoom = 6, maptype = "terrain")

mapArchipelago <- ggmap(baseArchipelago) 

MapRaster <- mapArchipelago 
            + geom_raster(data = finalBathy, aes(x = lon, y = lat, fill = value)) 
            + geom_contour(data = finalBathy, aes(x = lon, y = lat, z = value),
                bins = 8, colour = "darkslategray", lwd=0.25) 
            + geom_point(data=Coords, aes(x = -Long, y = Lat, fill = Type, shape = Type), color = "black",
                cex = 1.2, show.legend = FALSE) 
            + scale_shape_manual(values = c(23, 23), labels = c("Point 1", "Point2"), name = NULL) 


MapFinal <-   MapRaster + coord_cartesian()

((Примечание: без coord_cartesian(), я получаю сообщение об ошибке: «Ошибка: geom_raster работает только с декартовыми координатами»))

Если я удаляю fill=Type из аргумента aes в geom_point, проблема решается и точки отображаются правильно: Without fill=Type Но мне нужно, чтобы точки были заполнены их типом!

И если я добавлю scale_fill_manual(values=c("red", "blue"), labels=c("Point 1", "Point 2"), name=NULL) к коду, точки исчезнут, и я снова получу то же сообщение: "Дискретное значение, представленное в непрерывной шкале"

1 Ответ

0 голосов
/ 10 июня 2019

Вы можете добавить дополнительные дискретные шкалы для представления дискретных переменных:

MapRaster <- mapArchipelago +
            geom_raster(data = finalBathy, aes(x = lon, y = lat, fill = value)) +
            geom_contour(data = finalBathy, aes(x = lon, y = lat, z = value), 
                bins = 8, colour = "darkslategray", lwd=0.25) +         
            geom_point(data=Coords, aes(x = -Long, y = Lat, color = Type, shape = ype), 
                cex = 1.2, show.legend = FALSE) +
            scale_discrete_manual(aesthetics = c("colour"),
                values = c("red", "yellow"), 
                labels = c("Point 1","Point2"), 
                name = NULL) +
            scale_discrete_manual(aesthetics = c("shape"),
                values = 16:17, 
                labels = c("Point 1","Point2"), 
                name = NULL) 

Что дает

enter image description here

Отвечает ли онваш вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...