我正在尝试使用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
:
uniqPlot
:
但结果图似乎没有显示两个集:
我本来期待看到两组酒吧,一个是黑色,一个是红色,并排。我在这里读错了什么?我怎样才能制作出我想要的图表?
PS:对不起,我似乎无法正确显示这两个列表。第一行[1-10]是列号,第二行包含每列的值。
答案 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)
也许您想将它们标准化以比较相对频率。在这种情况下,您可以将它们除以它的总和。这给了
barplot(t(cbind(cnt1/sum(cnt1), cnt2/sum(cnt2))),
beside=T, col=c("black","red"), border=F)