Не могу установить параметр цвета в addCircleMarkers - PullRequest
0 голосов
/ 31 августа 2018

Я не могу получить функцию листовки addCircleMarkers для применения сопоставленных данных цветов к маркерам.

Nb. Я сгенерировал fn.palette, используя colorRampPalette. Он работает нормально, создавая шестнадцатеричные коды для цветов от зеленого> желтого> красного при отображении вектора данных x. Выходной вектор colours выглядит следующим образом ("# 00FF00FF" "# FFD200FF" "# 7FFF00FF" "# FFFF00FF" ...).

Если я установлю color для моего вектора шестнадцатеричных кодов:

map %>%
    addCircleMarkers(lon, lat, color = colours, radius = 2, weight = 0,
                     fill = TRUE, fillOpacity = 0.5, opacity = 0.6)

рисует только черные маркеры.

Если я использую функцию leaflet::pal:

pal <- colorNumeric(palette = fn.palette, domain = x)
map %>% addCircleMarkers(lon, lat, color = pal(x), radius = radius, 
                         stroke = FALSE, fillOpacity = 1)

дает

Предупреждающее сообщение: В seq.int (0, 1, length.out = n): первый элемент, использованный в аргументе length.out

и рисует только черные маркеры.

Использование color = ~pal(x) вместо color = pal(x) (как в примерах на https://rstudio.github.io/leaflet) throws

Ошибка в UseMethod ("metaData"): нет применимого метода для 'metaData', примененного к объекту класса "NULL"

У меня закончились идеи.

1 Ответ

0 голосов
/ 31 августа 2018

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

library(leaflet)
library(viridisLite)

# get domain of numeric data
(domain <- range(quakes$depth))

# make palette
pal <- colorNumeric(palette = viridis(100), domain = domain)

# make map
leaflet(quakes) %>% 
  addTiles() %>% 
  addCircleMarkers(color = ~pal(depth))  

Некоторые указатели:

1) При создании палитры с использованием colorNumeric (при условии, что у вас есть числовые данные, которые вы хотите отобразить), убедитесь, что аргумент domain - это возможные значения, которые можно отобразить.

Для colorNumeric и colorBin это может быть простой числовой диапазон (например, c (0, 100))

Здесь я сначала вычислил диапазон quakes$depth.

2) Убедитесь, что вы используете синтаксис color = ~pal(depth) в addCircleMarkers

3) Также убедитесь, что аргумент ~pal() - это числовая переменная в ваших данных, которую вы хотите отобразить в своей палитре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...