添加斐济地震数据和地图

问题描述 投票:0回答:1

我用

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

earthquakes

在下一步中,我想添加斐济的多边形,以便更好地了解地震实际发生的位置。但到目前为止我不知道如何结合这两个图。我所做的是:

# 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)

wrong

由此产生的情节是错误的。这里发生了什么?如何将斐济的国家边界添加到第一个发生地震的地块上?

r ggplot2 geospatial
1个回答
0
投票

您可以使用包

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

© www.soinside.com 2019 - 2024. All rights reserved.