2017-02-13 7 views
1

Я пытаюсь нарисовать карту США с 2016 года Выборы Результат использованием R. Наборы данных выглядит следующим образом -Как условно заполнить регионы с помощью ggplot в R

` >head(data) 
     long  lat group order State subregion Clinton Trump other 
1 -87.46201 30.38968  1  1 alabama  <NA> 34.4 62.1 3.6 
2 -87.48493 30.37249  1  2 alabama  <NA> 34.4 62.1 3.6 
3 -87.52503 30.37249  1  3 alabama  <NA> 34.4 62.1 3.6 
4 -87.53076 30.33239  1  4 alabama  <NA> 34.4 62.1 3.6 
5 -87.57087 30.32665  1  5 alabama  <NA> 34.4 62.1 3.6 
6 -87.58806 30.32665  1  6 alabama  <NA> 34.4 62.1 3.6` 

Задача состоит в том, чтобы сделать карту состояния в процентах от общего количества голосов в каждом штате президентских выборов в 2016 году в США, так что если процент избирателей Trump (данные $ Trump)> Clinton (данные $ Clinton), он окрашен в Red else Blue.

Кроме того, прочность цвета пропорциональна отображаемому значению.

Конечная карта должна выглядеть следующим образом

what i am supposed to make

Так это то, что я был в состоянии достигнуть -

ggplot() + 
    geom_polygon(data = total, 
       aes(x = long, y = lat, group = group, 
        fill = ifelse(total$Trump > total$Clinton, 
            yes = total$Trump, 
            no = total$Clinton)), 
       color = "black", size = 0.15) + 
    scale_fill_gradient2(low = muted("red"), mid = "white", 
         midpoint = 50, high = muted("blue"), 
         limits = c(min(total$Trump), max(total$Clinton)))+ 
    labs(fill = "TestLabel") 

который выглядит что-то вроде

what i have made in 5 days

Может ли кто-нибудь объяснить мне, как перейти от этой схемы градиента к 2-х цветовой схеме и «украсить» карту, как в «ожидаемом» изображении?

Обратите внимание, что я очень новичок в R и Maps, используя R, поэтому любезно извините меня за любые очевидные ошибки, которые я делаю.

+0

Сделайте один столбец, чтобы заполнить карту, прежде чем начинать строить, вычитая столбцы Клинтона и Трампа. Прямо сейчас ваши лимиты отключены от фактических данных, которые вы рисуете. Тем не менее, получить вставки AK/HI и выходы Восточного побережья без использования предварительно построенного пакета choropleth. – alistaire

+0

Спасибо за ответ. Что я понимаю от создания другого столбца для | Trump - Clinton | не даст желаемого результата. Я хочу использовать две цветовые схемы - «Блюз» для Клинтона и «Красных» для Трампа, заполненных условно (на кого больше), а тень пропорциональна (до соответствующего процента избирателя), а не градиентному подходу. – Philip

+0

Вы не хотели бы брать абсолютное значение; знак говорит, кто победил. Если вы хотите строго двухцветный без градиента, сделайте столбец с этими данными. Булевы или коэффициенты в порядке. Просто не пытайтесь сделать данные в середине графика. – alistaire

ответ

0

Добавив следующие строки кода и модифицировав dataframe, как было предложено alistaire, я смог приблизиться к цели.

>who.won<-as.numeric(total$Trump>total$Clinton) 

>total$isTrump<-who.won 

>total$votePercent<-ifelse(total$Trump>total$Clinton,yes = total$Trump, no = total$Clinton); 

>total$color<-factor(total$isTrump, levels =c(0,1), labels = c("#F79CD4","#0FCFC0")); 

>head(total) 

    long  lat group order State subregion Clinton Trump other 
1 -87.46201 30.38968  1  1 alabama  <NA> 34.4 62.1 3.6 
2 -87.48493 30.37249  1  2 alabama  <NA> 34.4 62.1 3.6 
3 -87.52503 30.37249  1  3 alabama  <NA> 34.4 62.1 3.6 
4 -87.53076 30.33239  1  4 alabama  <NA> 34.4 62.1 3.6 
5 -87.57087 30.32665  1  5 alabama  <NA> 34.4 62.1 3.6 
6 -87.58806 30.32665  1  6 alabama  <NA> 34.4 62.1 3.6 

isTrump votePercent color 
1  1  62.1 #3182BD 
2  1  62.1 #3182BD 
3  1  62.1 #3182BD 
4  1  62.1 #3182BD 
5  1  62.1 #3182BD 
6  1  62.1 #3182BD 

>ggplot()+geom_polygon(data = total, aes(x = long, y = lat, group = group,fill = as.character(total$color)), color = "black", size = 0.15)+labs(fill = "Votes") 

, который дает мне следующую карту - 1

Может кто-нибудь объяснить -

  1. Как сделать прозрачность цвета пропорционально проценту голосования (всего $ votePercent).
  2. Как переименовать ярлыки цветовой легенды в «Клинтон» и «Трамп». (Он берет значения из общего столбца $ color, который является цветом кода HEX).

 Смежные вопросы

  • Нет связанных вопросов^_^