#r #ggplot2 #scale #colorbrewer #usmap
Вопрос:
Я использую пакет usmaps для построения графиков. Прямо сейчас я использую непрерывную заливку шкалы, но вместо этого я хотел бы использовать дискретные поддоны из RColorBrewer. В моем текущем коде (ниже) переменные определяются по спискам, а затем зацикливаются. Итак, как я могу определить свой список переменных как факторы без индивидуального преобразования каждой переменной в фактор?
library(usmap) library(ggplot2) library(tidyverse) library(haven) library(RColorBrewer) library(stringr) library(extrafont) library(dplyr) library(purrr) var_list lt;- ("var1", "var2", "var3", "var4", "var5") var_labs lt;- ("This is var1", "This is var2", "This is var3", "This is var4", "This is var5") for (k in seq_along(var_list)) { for(i in 0:10) { print(plot_usmap(data = filter(database, year == 1800 i*10), values = var_list[k]) scale_fill_continuous( low = "white", high = "blue", na.value="light gray", label = scales::comma, name = "Legend") theme(legend.position = "right", plot.title=element_text(size=18), legend.title = element_blank()) labs(title = str_c(var_labs[k], ", ", 1800 i*10))) } }
То, что я попробовал, было примерно так, как показано ниже. Я хотел бы иметь возможность определять разрывы/дискретные единицы как не последовательные. Я получил «Ошибка: Непрерывное значение, заданное в дискретном масштабе»
scale_fill_brewer( type = 'quant', palette = 'Purples', breaks = c(100, 200, 300, 400, 500, 600, 1000, 2000, 8000), drop=FALSE)
Редактировать: Я также только что попробовал что-то вроде:
database$var1_cut lt;- cut(database$var_1, breaks = c(0, 100, 200, 300, 400, 500, 600, 1000, 8000), right = FALSE) database$var1_cutf lt;- as.factor(database$var1_cut) var1_discrete lt;- c("var1_cutf" var1_discretelab lt;- c("Var1 on Discrete scale")
но это все равно дало мне » Ошибку: дискретное значение, примененное к непрерывному масштабу.