【问题标题】:Plot aligned barplots in the same graph在同一图表中绘制对齐的条形图
【发布时间】:2016-11-05 02:48:46
【问题描述】:

我正在尝试使用 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]))

但我没有成功地将它们全部绘制在一起。 提前致谢- 阿图罗

【问题讨论】:

  • library(tidyverse) ; df %&gt;% rownames_to_column('ID') %&gt;% gather(var, val, -ID) %&gt;% ggplot(aes(var, val, fill = ID)) + geom_bar(stat = 'identity', position = 'dodge')?

标签: r bar-chart


【解决方案1】:

这就是你要找的吗?如果不是,请您制作一个您想要的手动示例并发布图片?

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 将绘图网格重置为单个图形,因此下次您需要绘制一些东西时,您不仅仅是制作一堆小图。

【讨论】:

  • 谢谢。但是当我输入第一行时,我得到一个错误:par(mfrow = c((ncol(dat),1), mar = c(2.5,4,1,1)) Error: unexpected ',' in "par (mfrow = c((ncol(dat),"
  • 抱歉,括号乱了,现在修好了。
【解决方案2】:

感谢 Barker 的修复,很抱歉花了这么长时间才回复您,但我病了将近一周。 您的代码效果很好,唯一的是,因为我需要绘制行而不是列,它应该是: 应用(dat,1,条形图,旁边 = 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 ()

当我这样做时,我只得到文件“plot.png”中最后 4 行的图,而不是所有行的图。此外,由于所有图的 x 轴都是相同的,是否可以仅在最后绘制它?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多