Нарисуйте гистограмму без изменения данных - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть следующая data.table

   Golds Bronzes Silvers Country
1:   930     639     728     USA
2:   247     320     284     GER
3:   192     234     212     FRA

, и я хочу нарисовать гистограмму группы с country в x-axis и количеством медалей в y-axis.Для каждой страны на графике должно быть 3 бара, обозначающих золото, серебро и бронзу.Есть ли способ сделать это с ggplot wnad без плавления данных .?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Стандартная функция barplot принимает матрицу высот:

barplot(as.matrix(x[, 1:3]), beside = TRUE,
        legend.text = x$Country)

Обновление: Чтобы построить ее наоборот, вы можете транспонировать матрицу:

barplot(t(as.matrix(x[, 1:3])),
        beside = TRUE,
        names.arg = x$Country,
        legend.text = names(x)[1:3])
0 голосов
/ 28 ноября 2018

создать фрейм данных

test <- data.frame(Country = c("USA", "GER", "FRA"), 
               Golds = c(930, 247, 192), 
               Bronzes = c(639, 320, 234),
               Silvers = c(728, 284, 212))

построить за один шаг

    test %>%
     gather(key = "award", value = "number", -Country)  %>%
     ggplot(aes(x = Country, y = number, color = award, fill = award)) + 
     geom_col(position = "dodge")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...