我正在尝试使用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]))
但是我并没有成功地将它们全部集中在一起。
提前致谢-
阿图罗
答案 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函数为dat
和beside = 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轴对于所有图都是相同的,因此只能在最后绘制它吗?