Согласно ответу @missuse на этот вопрос
Участок батиметрии и береговой линии с использованием ggplot2 и marmap
Я создал этот сюжет
По этому сценарию
Bathy <- getNOAA.bathy(lon1 = 37, lon2 = 38.7,
lat1 = -45.5, lat2 = -47.3, resolution = 1)
Bathy <- as.matrix(Bathy)
class(Bathy) <- "matrix"
Bathydf <- as.data.frame(Bathy)
Bathydf <- rownames_to_column(Bathydf, var = "Longitude")
Bathydf <- gather(Bathydf,Latitude,Depth, -1)
Bathydf <- mutate_all(.tbl = Bathydf, funs(as.numeric))
ggplot(data = ctd, aes(x = Longitude, y = Latitude)) +
geom_raster(aes(fill = Chla)) +
scale_fill_gradientn(colours = rev(my_colours)) +
geom_contour(aes(z = Chla), binwidth = 2, colour = "red", alpha = 0.2) +
geom_contour(aes(z = Chla), breaks = 0.1, colour = "darkgrey") +
geom_contour(aes(z = Chla), breaks = 0.2, colour = "darkgrey") +
geom_contour(aes(z = Chla), breaks = 0.3, colour = "black") +
geom_contour(data = subset(Bathydf, Depth < 0),aes(x = Longitude, y = Latitude, z = Depth),
bins = 10, colour = "darkgray") +
stat_contour(data = subset(Bathydf, Depth >= 0),geom="polygon",
aes(z = Depth), fill = "black") +
geom_contour(data = Bathydf, aes(z = Depth), breaks = 1000, colour = "black", alpha = 1) +
geom_point(data = ctd, aes(x = Longitude, y = Latitude),
colour = 'black', size = 3, alpha = 1, shape = 15) +
theme(panel.background = element_blank()) +
theme(aspect.ratio=1)
Это работает, но я не уверен, что использование stat_contour()
- лучший способ для построения областей. Кроме того, чертя участки островов, он раскрашивает и некоторые их части, придавая им форму.
Как вы думаете, использование stat_contour()
- лучший способ для построения областей, и знаете ли вы, почему оно также наносит проводные точки вокруг большой черной области?