我用
datasets::quakes
来绘制斐济的地震:
quakes_df <- datasets::quakes
library(ggplot2)
my_plot <- ggplot() +
geom_point(data= quakes_df, aes(lat, long, col= mag)) +
scale_color_gradient(low= "green", high= "red", na.value= "black", aesthetics= "colour",
breaks= seq(min(quakes_df$mag), max(quakes_df$mag), length.out= 4))
my_plot
在下一步中,我想添加斐济的多边形,以便更好地了解地震实际发生的位置。但到目前为止我不知道如何结合这两个图。我所做的是:
# Data of whole world
world <- rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
# Extract Fiji only.
fiji <- subset(world, sovereignt == "Fiji", select= "geometry")
# Add new layer to existing plot
my_plot + geom_sf(data= fiji)
由此产生的情节是错误的。这里发生了什么?如何将斐济的国家边界添加到第一个发生地震的地块上?
您可以使用包
sf
将数据框转换为地理空间对象 sf
例如。 与 sf::st_as_sf()
。数据似乎是用经纬度来表示的;可能在坐标参考系统(CRS)EPSG:4326 中。由于是在180度线附近,这个答案建议使用CRS EPSG:3994(免责声明:我对太平洋地区的CRS不太熟悉)。
我在地图上添加了澳大利亚以获得更多空间背景。
library(sf)
library(tidyverse)
quakes_df <- datasets::quakes
world <- rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
fiji <- subset(world, sovereignt == "Fiji", select= "geometry")
Australia <- subset(world, sovereignt == "Australia", select= "geometry")
quakes_sf <- st_as_sf(quakes_df , coords =c ("long","lat") , crs = 4326) %>%
st_transform(crs=3994)
ggplot() +
geom_sf(data= fiji %>% st_transform(crs=3994))+
geom_sf(data= Australia %>% st_transform(crs=3994))+
geom_sf(data= quakes_sf, aes(col= mag),alpha = 0.2) +
scale_color_gradient(low= "green", high= "red", na.value= "black", aesthetics= "colour",
breaks= seq(min(quakes_df$mag), max(quakes_df$mag), length.out= 4))
创建于 2024-07-10,使用 reprex v2.1.0