首页 > 解决方案 > 如何在 R 中创建分组条形图

问题描述

我想在 R 中创建一个分组条形图。但是,我目前使用的代码是创建一个堆叠条形图。我想要一周中的每一天都有两个酒吧。一个条形显示第一行数据,另一个条形显示第二行数据。有谁知道如何做到这一点?

#  Sample CSV data
x <- read.csv(text="month, mon, tues, wed, thurs, fri, sat, sun
  9, 1, 3, 5, 7, 1, 2, 2
  9, 1, 6, 8, 1, 1, 2, 3")


library(ggplot2)
# x <- read.csv("checkinlobby.csv")
y <- data.matrix(x)
barplot(y)

标签: rcsvbar-chart

解决方案


这是我的解决方案:

1st)创建一个新列,允许我们将其传递给填充参数。

2nd)将数据从宽更改为长,以使 ggplot 更容易。

3rd) 使 day 变量成为一个因素并重新排序

4th) 使用 position = "dodge" 绘图

library(tidyverse)

#  Sample CSV data
x <- read.csv(text="month, mon, tues, wed, thurs, fri, sat, sun
              9, 1, 3, 5, 7, 1, 2, 2
              9, 1, 6, 8, 1, 1, 2, 3")


##
graph <- x %>% mutate(rows = 1:nrow(x)) %>%
  gather(day, measure, -month, -rows) %>%
  mutate(day = factor(day,
  levels = c("mon","tues","wed","thurs", "fri", "sat","sun"))) %>%
  ggplot(aes(x = day, y = measure, fill = as.character(rows))) +
  geom_col(position = "dodge")

graph

推荐阅读