Определите последний столбец графика распределения как больше, чем все значения до - PullRequest
1 голос
/ 07 января 2020

Я хочу построить распределение общего количества побед игрока. Я бы хотел, чтобы последний раздел оси x был категорией «больше, чем значения до».

Пример данных:

game_data <- data.frame(player = c(1,2,3,4,5, 6), n_wins = c(1,8,2,3,6,4))

game_data
  player n_wins
1      1      1
2      2      8
3      3      2
4      4      3
5      5      6
6      6      4
6      6      4

Следующий код создает категорию "NA ", но я хочу, чтобы это было 5+ (= более 5 побед).

game_data %>% group_by(player) %>% summarise(allwins = sum(n_wins)) %>%
  ggplot(aes(x = cut(allwins, breaks = seq(1,6, by = 1)), include.lowest=TRUE)) + 
  geom_bar(aes(y = (..count..)/sum(..count..))) + 
  scale_y_continuous(labels=scales::percent) +
  labs(title="Distribution of Wins", subtitle="", y="Fraction of Players", x="Number of Wins")

Distribution Plot

Я не только хочу изменить ярлык, я хочу, чтобы он автоматически создал последнюю категорию.

1 Ответ

3 голосов
/ 07 января 2020

Вы можете сделать следующее, добавив + Inf в качестве перерыва, обратите внимание, что у вас нет значений, равных 5, поэтому вам нужно добавить drop = FALSE с scale_x_discrete:

set.seed(100)
game_data <- data.frame(player = c(1,2,3,4,5, 6), n_wins = c(1,8,2,3,6,4))
BR = c(0:5,+Inf)

game_data %>% 
group_by(player) %>% summarise(allwins = sum(n_wins)) %>%
  ggplot(aes(x = cut(allwins, breaks = BR,labels=c(1:5,"5+")))) + 
  geom_bar(aes(y = (..count..)/sum(..count..))) + 
  scale_y_continuous(labels=scales::percent) +
  labs(title="Distribution of Wins", subtitle="", 
y="Fraction of Players", x="Number of Wins")+
scale_x_discrete(drop=FALSE)

enter image description here

Может быть, небольшой комментарий, зачем вам обобщать данные?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...