首页 文章

创建两个不同长度的表的条形图

提问于
浏览
0

我似乎无法弄清楚如何获得一个漂亮的条形图,其中包含来自两个包含不同列数的表的数据 .

有问题的表是这样的(从末尾剪下一些数据):

> tab1
   1    2    3    6    8   31
5872 1525  831  521  299    4

> tab2
   1    2    3    4   22
7874  422    2    5    1

请注意,列名称和大小不同 . 当我在其中一个表上执行 barplot() 时,它会显示我想要的图表(将列名称显示为X轴,将频率显示在Y轴上) . 但是,我希望这两个并排 .

我已经创建了一个包含变量作为注释的数据框和第一列中的不同行名(使用 data.frame()merge() ),但是当我绘制这个时,X轴似乎都是错误的 . 试图重新排序列给了我一个不同长度的例外 .

码:

combined <- merge(data.frame(tab1), data.frame(tab2), by = c('Var1'), all=T)
barplot(t(combined[,2:3]), names.arg = combined[,1], beside=T)

这显示了一个图,但并非所有标签都存在,位置26的值在33之后绘制 .

有没有简单的方法让这个情节有效?一个ggplot2解决方案会很好 .

1 回答

  • 2

    您可以将所有数据放在一个数据框中(如示例所示) .

    df<-data.frame(group=rep(c("A","B"),times=c(2,3)),
       values=c(23,56,345,6,7),xval=c(1,2,1,2,8))
      group values xval
    1     A     23    1
    2     A     56    2
    3     B    345    1
    4     B      6    2
    5     B      7    8
    

    然后 ggplot()geom_bar() 可用于绘制数据 .

    ggplot(df,aes(xval,values,fill=group))+
      geom_bar(stat="identity",position="dodge")
    

相关问题