Как удалить государственные сокращения с карты Choroplethr - PullRequest
1 голос
/ 05 апреля 2020

Я работаю с картой choroplethr, как показано ниже. Как просто удалить аббревиатуры состояний?

enssster image description here

Вот код репликации:

library(choroplethr)
library(choroplethrMaps)

data(df_pop_state)
df_pop_state$value <- as.numeric(df_pop_state$value)

state_choropleth(df_pop_state, num_colors = 1,
                             title = "2012 State Population Estimates",
                             legend = "Population")

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Спасибо за использование choroplethr. Обратите внимание, что Choroplethr использует объекты R6. Фактически, функция state_choropleth - это просто удобная оболочка для объекта StateChoropleth R6:

> state_choropleth
function (df, title = "", legend = "", num_colors = 7, zoom = NULL, 
    reference_map = FALSE) 
{
    c = StateChoropleth$new(df)
    c$title = title
    c$legend = legend
    c$set_num_colors(num_colors)
    c$set_zoom(zoom)
    if (reference_map) {
        if (is.null(zoom)) {
            stop("Reference maps do not currently work with maps that have insets, such as maps of the 50 US States.")
        }
        c$render_with_reference_map()
    }
    else {
        c$render()
    }
}
<bytecode: 0x7fdda6aa3a10>
<environment: namespace:choroplethr>

Если вы посмотрите на исходный код , вы увидите, что есть поле на объекте, который делает то, что вы хотите: show_labels. По умолчанию TRUE.

Мы можем получить желаемый результат, просто создав вашу карту с помощью объекта StateChoropleth (не функции) и установив show_labels в FALSE.

c = StateChoropleth$new(df_pop_state)
c$title = "2012 State Population Estimates"
c$legend = "Population"
c$set_num_colors(1)
c$show_labels = FALSE
c$render()

enter image description here

Я выбрал этот подход, потому что, как правило, я обнаружил, что многие функции в R имеют большое количество параметров, и это может сбивать с толку. Недостатком является то, что функции легче документировать, чем объекты (особенно в R), поэтому часто возникают подобные вопросы.

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

Эта функция возвращает объект ggplot, поэтому вы можете вручную проверить слои и удалить те, которые вам не нужны (здесь вы хотите удалить слой GeomText):

states <- state_choropleth(
  df_pop_state, 
  num_colors = 1,
  title = "2012 State Population Estimates",
  legend = "Population"
) 

layer_no <- grep("GeomText", sapply(states$layers, function(x) class(x$geom)[1]))

states$layers[[layer_no]] <- NULL

states

enter image description here

...