在r中并排绘制具有相同水平的因子

时间:2017-06-06 15:11:03

标签: r plot

数据看起来像这样 -

ID  Day_start Day_end
1 Sa Sa
2 Sa Tu
3 Sa Tu
3 Sa NA
3 Tu Tr

我希望得到一个并排的条形图,其中包含Day_start和Day_end不同日期的频率比较。 barplot查找矢量或矩阵,但Day_start和Day_end是因子。

1 个答案:

答案 0 :(得分:1)

如果您想要彼此相邻的两个单独的条形图,则可以使用barplot()&基础R中的table()

my_df <- read.table(text="ID  Day_start Day_end
                           1         Sa      Sa
                           2         Sa      Tu
                           3         Sa      Tu
                           3         Sa      NA
                           3         Tu      Tr", header=T)

par(mfrow=c(1,2))
barplot(table(my_df$Day_start))
barplot(table(my_df$Day_end))
par(mfrow=c(1,1))

输出

side by side base historams

如果您需要分组条形图,可以使用ggplot2(此处我还使用tidyr&#39; s gather()将数据转换为长格式。如果您想显示零空间,您可以查看this SO question

library(ggplot2)
long_df <- tidyr::gather(my_df, day_cat, day, -ID)

ggplot(long_df, aes(x=factor(day), fill = day_cat)) + 
  geom_bar(position = "dodge")

输出

ggplot2 grouped bar