#r #ggplot2 #tidyr
#r #ggplot2 #tidyr
Вопрос:
Очень смущен тем, почему следующее не работает.
У меня есть переменное состояние. Это динамически изменяется на основе вывода выпадающего списка.
Например, State=»Алабама»
Я присваиваю легенде следующие цвета:
cols= c(State = "black", "All States" = "red")
Который в конечном итоге передается в scale_fill_manual
Приведенное выше создает правильную метку легенды для Алабамы, однако в легенде не отображается полоса / цвет.
Если я вместо этого сделаю следующее:
cols= c("Alabama" = "black", "All States" = "red")
легенда верна.
Я пробовал
paste0(State) = "black", as.character(State) = "black"
безрезультатно.
Где я ошибаюсь?
Комментарии:
1. Пожалуйста, покажите небольшой воспроизводимый пример с кодом
Ответ №1:
Мы можем использовать setNames
для создания именованного вектора
State <- "Alabama"
cols = setNames(c("black", "red"), c(State, "All States"))
Комментарии:
1. Хотя это не динамично, что происходит при изменении переменной состояния?
2. @Bjc51192 Он динамический. Вы можете присвоить значение объекту, то есть «Состоянию», и передать его. Обновлен код
3. Это сработало, можете ли вы объяснить логику того, что делает вышеупомянутое?
4. @Bjc51192 Присвоение в lhs вычисляет его буквально вместо значения в этом объекте, и именно по этой причине вы получите
c(State = 1)
имя «Состояние» вместо «Алабма». ПриsetNames
этом мы присваиваем вектору имена. Здесь объект ‘State’ вычисляется для возврата значения в этом вектореc(State, 'All States')