将两个数据集合并为一个直方图

时间:2014-05-29 12:43:56

标签: r plot histogram

我正在尝试使用R来比较两个数据集的直方图。但是,我还没有找到一种方法。每个数据集都是69个元素长的基因计数数字列表。前十个元素看起来像这样:

bt549_counts
##       1       2       3       4       5       6       7       8       9      10      
##  627984  711915  690967 1414629 1097368  274380  432299  165781  329155 1984503
bt549_uniqCounts
##    1    2    3    4    5    6    7    8    9   10  
## 1794 1982 1921 3556 2851  800 1142  457 1013 4911

我试图绘制每个列表,然后将这些列表合并到一个图中,如下所示:

btPlot <- plot(bt549_counts, type="h")
uniqPlot <- plot(bt549_uniqCounts, type="h")
combPlot <- t(cbind(bt549_counts,bt549_uniqCounts))
barplot(combPlot, beside=TRUE, space=rep(0,2*ncol(combPlot)), col=c("red", "black"))

以下是前两个图:

btPlot

btPlot

uniqPlot

uniqPlot

但结果图似乎没有显示两个集:

result

我本来期待看到两组酒吧,一个是黑色,一个是红色,并排。我在这里读错了什么?我怎样才能制作出我想要的图表?

PS:对不起,我似乎无法正确显示这两个列表。第一行[1-10]是列号,第二行包含每列的值。

1 个答案:

答案 0 :(得分:3)

如果您绘制测试数据,您将看到它正常工作。问题是你正在绘制计数并且计数是如此不同(bt549_uniqCounts要小得多,所以你几乎看不到它)。我添加了border=F因此它不会在条形图上画一条黑线并掩盖填充。如果你看起来很难,你可以看到5点红色。

cnt1<-c(627984,711915,690967,1414629,1097368,274380,432299,165781,329155,1984503)
cnt2<-c(1794,1982,1921,3556,2851,800,1142,457,1013,4911)
names(cnt1)<-1:10
names(cnt2)<-1:10
barplot(t(cbind(cnt1, cnt2)), beside=T, col=c("black","red"), border=F)

standard bar

也许您想将它们标准化以比较相对频率。在这种情况下,您可以将它们除以它的总和。这给了

barplot(t(cbind(cnt1/sum(cnt1), cnt2/sum(cnt2))), 
    beside=T, col=c("black","red"), border=F)

normalized bar