Я пытаюсь использовать оболочку highcharts highcharter
в R, чтобы создать серию карт. Карты, которые отображают цвет состояния или страны для непрерывной переменной, работают красиво, однако у меня возникают некоторые проблемы с отображением цвета состояния непрерывной переменной. (В принципе, мне бы хотелось, чтобы он выглядел примерно как this).Карта Highcharter с категориальными переменными в R
Я пробовал все, о чем я могу думать, и ничего не работает. Вот пример с фиктивными данными. Предположим, что я хочу показать состояния категории A как красные, категория B - желтые, а категория C - синие.
library("dplyr")
library('highcharter')
library("viridisLite")
data(usgeojson)
## Create data frame with letter categories, numerical categories, and state abbreviations
categories <- c("A", "A", "A", "A", "A", "A", "C", "A", "A", "A", "A", "A",
"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "C", "A", "A", "A", "B",
"B", "B", "B", "B", "C", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B",
"B", "B", "B", "C", "B", "B", "B", "B")
states <- c("AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI",
"ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS",
"MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR",
"PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY")
numbers <- c("1", "1", "1", "1", "1", "1", "3", "1", "1", "1", "1", "1", "1",
"1", "1", "1", "1", "1", "1", "1", "1", "1", "3", "1", "1", "1", "2", "2",
"2", "2", "2", "3", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2",
"2", "2", "3", "2", "2", "2", "2")
data <- data.frame(categories, states, numbers)
## Convert abbreviations to state names for highcharter
data$state_full <- state.name[match(data$state, state.abb)]
## If we plot these data using the numerical categories, the colors are on a scale
highchart(type = "map") %>%
hc_add_series_map(map = usgeojson,
df = data,
joinBy = c("woename", "state_full"),
value = "numbers")
## Plotting by adding each category individually ends up with the each new map
## overwriting the ones before it.
cat_A <- data[data$categories == "A", ]
cat_B <- data[data$categories == "B", ]
cat_C <- data[data$categories == "C", ]
highchart(type = "map") %>%
hc_add_series_map(map = usgeojson,
df = cat_A,
joinBy = c("woename", "state_full"),
value = "numbers") %>%
hc_add_series_map(map = usgeojson,
df = cat_B,
joinBy = c("woename", "state_full"),
value = "numbers") %>%
hc_add_series_map(map = usgeojson,
df = cat_C,
joinBy = c("woename", "state_full"),
value = "numbers")
Это явно может работать в высоких диаграммах, но я не могу заставить его работать в highcharter.
Любой ввод очень ценится.
Спасибо!
Интересно - не связаны, но когда я запускаю это я теперь получаю ошибку, что объект ' 'usgeojson' не found'. Протестировано против других моих проектов с картами карт высокой чарты, и они также терпят неудачу. Ах, я толкнул его. Загрузка карт сейчас. Но да, они все еще монохроматичны. – wergeld
О! Извини за это! Я отредактировал сценарий и добавил необходимый вызов 'data (usgeojson)'. –