R: настроить значения оси X на основе значений Y на гистограмме - PullRequest
0 голосов
/ 04 февраля 2019

Согласно следующему R-коду, кадр данных Results сгруппирован по переменной Industry, и для каждого из них я вычисляю количество случаев / наблюдений.После этого я создаю гистограмму, где ось X отображает отрасли, а Y - количество случаев / наблюдений.Наконец, график переворачивается (первый график).

Results %>% 
  group_by(Industry) %>% 
  summarise(Count = length(Buyer.ID)) %>%
  ggplot() +
  geom_col(aes(x = Industry, y = Count),fill = "red") +
  geom_text(aes(x = Industry, y = Count, label =  Count), size = 5, hjust = 0) +
  labs(y = "Number of Buyers",x = "Industry") + 
  coord_flip()

enter image description here

Тем не менее, когда я пытаюсь упорядочить свои бары от одного с наибольшим количеством случаев, до самого низкого значенияось X не отрегулирована / не упорядочена соответственно (второй график).Они имеют тот же порядок, что и на первом графике.

Results %>% 
  group_by(Industry) %>% 
  summarise(Count = length(Buyer.ID)) %>%
  ggplot() +
  geom_col(aes(x = reorder(Industry,sort(Count)), y = sort(Count)),fill = "red") +
  geom_text(aes(x = reorder(Industry,sort(Count)), y = sort(Count), label =  sort(Count)), size = 5, hjust = 0) +
  labs(y = "Number of Buyers",x = "Industry") +
  coord_flip()

enter image description here

Есть ли решение для этой проблемы?

Вот образец:

Buyer ID    Industry
103992  Services
372423  Chemicals
2769385 Agriculture
2818071 Construction
2822202 Construction
2980052 Services
3175852 Textiles
3320461 Services
3328727 Construction
3347810 Services
3362754 Electronics
3362872 Construction
3363103 Construction
3364583 Food
3364678 Consumer Durables
3365146 Electronics
3365326 Metals
3365327 Chemicals
3365497 Machines
3366894 Construction
3367204 Metals
3368157 Food
3368385 Food
3368919 Chemicals
3369333 Food
3370385 Textiles
3370467 Construction Materials
3370701 Chemicals
3371202 Consumer Durables
3371243 Machines
3371757 Textiles
3372520 Food
3374124 Chemicals
3374648 Construction
3374794 Construction
3377600 Services
3378984 Electronics
3379162 Construction Materials
3379612 Food
3380628 Machines
3380943 Machines
3381275 Paper
3381859 Metals
3382106 Construction Materials
3382478 Food
3385367 Services
3385639 Machines
3385840 Machines
3386488 Food
3387205 Transport

1 Ответ

0 голосов
/ 07 февраля 2019

Моя ошибка была в упорядочении переменных x и y.Заказ y (sort(Count)) является избыточным.Это похоже на отмену порядка, который был установлен в переменной x.Следовательно, правильный код следующий:

Results %>% 
  group_by(Industry) %>% 
  summarise(Count = length(Buyer_ID)) %>%
  ggplot() +
  geom_col(aes(x = reorder(Industry, Count), y = Count),fill = "red") +
  geom_text(aes(x = reorder(Industry, Count), y = Count, label = Count), size = 5, hjust = 0) +
  labs(y = "Number of Buyers",x = "Industry") +
  coord_flip()

, который дает следующий графический результат:

enter image description here

...