在同一图表中绘制对齐的条形图

时间:2016-11-05 02:48:46

标签: r bar-chart

我正在尝试使用R barplot函数在同一图表上绘制以下数组:

ID  1   2   3   4   5   6   7   8
HeL 0   2   1   4   2   3   2   4
CaC 2   0   0   2   1   5   7   8
NIH 1   2   5   6   3   5   7   9

我需要让每一行的条形图都有自己的y轴,但x轴应该对所有行都是通用的。到目前为止我所取得的是从文件中读取矩阵" rna.tab"然后分别绘制每一行:

dat <- read.table ("rna.tab", row.names=1, header=TRUE)
barplot (as.matrix (dat[,1]))
barplot (as.matrix (dat[,2]))
barplot (as.matrix (dat[,3]))
但是我并没有成功地将它们全部集中在一起。 提前致谢- 阿图罗

2 个答案:

答案 0 :(得分:0)

这是你在找什么?如果您不能做出您想要的手动示例并发布图像?

par(mfrow = c(ncol(dat),1), mar = c(2.5,4,1,1))
apply(dat, 2, barplot, beside = TRUE)
par(mfrow = c(1,1))

第一个par表示你想要一个包含dat和1列列的行数的网格,并将图的边距更改为合适的。 apply函数为datbeside = TRUE的eash列创建条形图,使列彼此相邻。下一个par将绘图网格重置为单个图形,因此下次需要绘制某些内容时,您不仅仅会制作一堆小图。

答案 1 :(得分:0)

感谢Barker的修复,抱歉花了这么长时间才回到你身边,但我病了将近一周。 你的代码工作得很好,唯一的是,因为我需要绘制行而不是列,它应该是:     apply(dat,1,barplot,旁边= TRUE) 很抱歉没有明确这一点。

如果你不介意,我还有最后一个问题。通常我的真实生活矩阵是6000 * 30。这意味着我必须绘制30行。 通常我将图像保存到磁盘:

png ("plot.png")
par(mfrow = c(ncol(dat),1), mar = c(2.5,4,1,1))
apply(dat, 1, barplot, beside = TRUE)
dev.off ()

当我这样做时,我只获得文件中最后4行的图表&#34; plot.png&#34;,而不是所有行的图。此外,由于x轴对于所有图都是相同的,因此只能在最后绘制它吗?