绘制组栏图而无需重塑数据

时间:2018-11-28 01:36:00

标签: r

我有以下数据。表

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

,我想在country中使用x-axisy-axis中使用奖牌数量来绘制组条形图。对于每个国家/地区,图表均应具有3个指示金,银和铜的条形图。有没有一种方法可以使用ggplot wnad进行操作而不会熔化数据?

2 个答案:

答案 0 :(得分:1)

标准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])

答案 1 :(得分:0)

创建数据框

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")