Цветовое кодирование точек пространственных данных на карте sp в R - PullRequest
0 голосов
/ 03 апреля 2020

В данный момент я изучаю R, и я в конце концов пытаюсь понять, как определить два цвета на точках пространственных данных на карте, которую я сделал в R. Карта прогресса

В кадре данных есть три переменные, координаты x и y, а затем наблюдаемые. 0 означает отсутствие наблюдения, 1 означает соблюдение. Я sh выделю фиолетовый цвет для наблюдаемого (1) и красный цвет для ненаблюдаемого (0).

Это код, который я использовал для создания моей карты:

сюжет (Bp_shp4, col = "серый", оси = TRUE, xlab = "Долгота", ylab = "Широта", xlim = c (- 1, 35), ylim = c (35 , 60), main = expression ('Участки выборки для' itali c ('Brachytron pretense') 'присутствие или отсутствие'))

сюжет (Bp_hydro, pch = 20, col = "cyan", cex = 0.5, add = TRUE)

график (Bp_Spatial_df, pch = 20, cex = 1, add = TRUE,)

Bp_Spatial_df - это мой фрейм данных с три переменные, однако, если я указываю цвет, он окрашивает только один единодушный цвет, я попытался сделать его фактором, но не могу добавить его в свой существующий код без точек, которые просто не отображаются.

Любая помощь будет оценена так много, я достиг полной остановки в своем назначении, и это в значительной степени только начало ...

Str (данные) всех фреймов данных в моем проекте:

* +1023 * загружен .CSV:

    > str(Bp_Coord)
     'data.frame':  93 obs. of  3 variables:
     $ x       : num  7.29 9.88 1.12 -3.88 22.21 ...
     $ y       : num  43.9 54 49.3 43.1 40.6 ...
     $ Observed: int  1 1 1 1 1 1 1 1 1 0 ...

**Spatial point assignment**
coords <- SpatialPoints(Bp_Coord[, c("x", "y")])
> str(coords)
Formal class 'SpatialPoints' [package "sp"] with 3 slots
  ..@ coords     : num [1:93, 1:2] 7.29 9.88 1.12 -3.88 22.21 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : NULL
  .. .. ..$ : chr [1:2] "x" "y"
  ..@ bbox       : num [1:2, 1:2] -9.12 37.21 26.46 58.62
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:2] "x" "y"
  .. .. ..$ : chr [1:2] "min" "max"
  ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
  .. .. ..@ projargs: chr NA

Код кадра данных пространственной точки:

Bp_Spatial_df <- SpatialPointsDataFrame(coords, Bp_Coord)
proj4string(Bp_Spatial_df) <- CRS("+proj=longlat +ellps=WGS84")

> str(Bp_Spatial_df)
Formal class 'SpatialPointsDataFrame' [package "sp"] with 5 slots
  ..@ data       :'data.frame': 93 obs. of  3 variables:
  .. ..$ x       : num [1:93] 7.29 9.88 1.12 -3.88 22.21 ...
  .. ..$ y       : num [1:93] 43.9 54 49.3 43.1 40.6 ...
  .. ..$ Observed: int [1:93] 1 1 1 1 1 1 1 1 1 0 ...
  ..@ coords.nrs : num(0) 
  ..@ coords     : num [1:93, 1:2] 7.29 9.88 1.12 -3.88 22.21 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : NULL
  .. .. ..$ : chr [1:2] "x" "y"
  ..@ bbox       : num [1:2, 1:2] -9.12 37.21 26.46 58.62
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:2] "x" "y"
  .. .. ..$ : chr [1:2] "min" "max"
  ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
  .. .. ..@ projargs: chr "+proj=longlat +ellps=WGS84"

Два других кадра данных - это просто шейп-файлы.

1 Ответ

0 голосов
/ 03 апреля 2020

I wi sh для выделения фиолетового цвета наблюдаемому (1) и красного цвета ненаблюдаемому (0).

Сначала создайте цвета:

cols <- c("red", "purple")

Тогда, поскольку наблюдаемый является вектором чисел c, вы можете использовать его для индексации этих предопределенных цветов в ваших данных. Но добавьте 1L, чтобы сделать его (1,2) вектором, поскольку индексирование начинается с 1 в R.

plot(Bp_Spatial_df, pch = 20, col = cols[Bp_Spatial_df$Observed+1L], cex = 0.5, add = TRUE)
...