ggplot и растровые значения для многомерной функции и проекции - PullRequest
0 голосов
/ 07 мая 2020

Я использую geom_bin2d () и stat_summary_2d в ggplot для создания базового c растра карты. Он отлично работает при отображении итогов для каждой ячейки растра, но как насчет более сложной функции, такой как индекс Симпсона?

Это работает для отображения общего значения

foo.df <- data.frame(
         lat = c(37.2779493, 37.301036, 37.3269587, 37.3291085, 37.3342051),
         lon = c(138.3863016, 138.4244812, 138.4512225, 138.4548332, 138.465821),
  cat_1_perc = c(0.996412282356938,0.959180420058743,
                 0.967593253672882,1,0.923975658030782),
  cat_2_perc = c(0, 0, 0, 0, 0),
  cat_3_perc = c(0.00358771764306195,0.0408195799412567,
                 0.0324067463271178,0,0.076024341969218),
  cat_4_perc = c(0, 0, 0, 0, 0),
  cat_5_perc = c(0, 0, 0, 0, 0),
       total = c(851.795014, 119.134004, 55.975999, 297.747986, 67.702)
)

library(ggplot2)
ggplot(foo.df, aes(lon,lat,z=total)) + geom_bin2d()

Но у меня также есть процент от этого общего количества по категориям, и я хочу измерить разнообразие Симпсона для каждой ячейки растра. Достаточно легко вычислить индекс для каждой строки.

Simpson <- function (x) {sum(foo.df$cat_1_perc[x]^2+foo.df$cat_2_perc[x]^2+
foo.df$cat_3_perc[x]^2+foo.df$cat_4_perc[x]^2+foo.df$cat_5_perc[x]^2)}

sapply(1:nrow(foo.df), function (x) Simpson(x))

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

И в качестве бонусного раунда - есть ли способ настроить размер ячейки растра для широта и разные картографические проекции в ggplot? Или это приводит меня к растру ?

...