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()and 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 解决方案会很好。

4

1 回答 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()withgeom_bar()可用于绘制数据。

ggplot(df,aes(xval,values,fill=group))+
  geom_bar(stat="identity",position="dodge")
于 2013-03-13T09:59:34.867 回答