немного новичок в этом, поэтому любая помощь будет принята с благодарностью. Я загрузил шейп-файл всех стран мира и начертил его. Однако у меня возникли проблемы с добавлением кучи точек из координат на график. Любая помощь в том, как исправить это, будет принята с благодарностью.
Код до сих пор
MeteoriteData <- read.csv("C:/Users/ChaseDickson_/Desktop/College/AERO 689/Semester Project/Meteorite Landings.csv")
MeteoriteData$lat <- as.factor(MeteoriteData$lat)
MeteoriteData$long <- as.factor(MeteoriteData$long)
world <- st_read("C:/Users/ChaseDickson_/Desktop/College/AERO 689/Semester Project/TM_WORLD_BORDERS_SIMPL-0.3/TM_WORLD_BORDERS_SIMPL-0.3.shp")
world <- st_transform(world, crs = 4326)
ggplot() +
geom_sf(data = world) +
theme_bw()
Это возвращает график, который прикреплен.
я пытался использовать
ggplot() +
geom_sf(data = world) +
theme_bw() +
geom_point(data = MeteoriteData, aes(x = lat, y = long)
но это не работает, так как выдает эту ошибку
Error in `calc_limits_bbox()`:
! Scale limits cannot be mapped onto spatial coordinates in `coord_sf()`
ℹ Consider setting `lims_method = "geometry_bbox"` or `default_crs = NULL`.
Можете ли вы предоставить более подробную информацию о MeteoriteData? Похоже, вы неправильно округлили X и Y. X обычно должен быть долготой, а Y — широтой.
@StewartMacdonald делает отличное замечание. Я вижу еще кое-что сомнительное: почему вы изменили широту и долготу Meteorite Data
на factor
с кодом as.factor
?
Три проблемы, которые я вижу в вашем коде:
1/
MeteoriteData$lat <- as.factor(MeteoriteData$lat)
Вам нужно преобразовать ваши данные lat и long в факторы? Я никогда не видел, чтобы это делалось раньше, и я подозреваю, что это приведет только к неприятностям.
2/
geom_point(data = MeteoriteData, aes(x = lat, y = long)
Похоже, вы неправильно расставили x/y и долготу/широту. x должен быть длинным, а y должен быть лат.
3/
Как говорит r2evans, вам нужна закрывающая скобка в этой строке:
geom_point(data = MeteoriteData, aes(x = lat, y = long)
Попробуйте этот код:
require('sf')
# Read in data from .csv file
MeteoriteData <- read.csv("C:/Users/ChaseDickson_/Desktop/College/AERO 689/Semester Project/Meteorite Landings.csv")
# Convert these points to an SF object, specifying the X and Y
# column names, and supplying the CRS as 4326 (which is WGS84)
MeteoriteData <- st_as_sf(MeteoriteData, coords=c('long', 'lat'), crs=4326)
# Read in the world shape file and convert it to the same CRS
world <- st_read("C:/Users/ChaseDickson_/Desktop/College/AERO 689/Semester Project/TM_WORLD_BORDERS_SIMPL-0.3/TM_WORLD_BORDERS_SIMPL-0.3.shp")
world <- st_transform(world, crs = 4326)
# Plot it
ggplot() +
geom_sf(data = world) +
geom_sf(data = MeteoriteData) +
theme_bw()
Примечание. У меня нет доступа к вашим файлам данных, поэтому этот код взят из памяти и не проверен, но он должен указать вам правильный путь.
В вашем вызове
geom_point
отсутствует закрывающая скобка, не уверен, что это проблема копирования/вставки или вы пропустили ее в своем реальном коде.