首页 > 解决方案 > 用于条形图的 for 循环更改 par(mfrow) 和标题位置

问题描述

对于报告,我按组汇总数据。由于版权问题,我在下面创建了一些虚拟数据(第一个列是组,然后是值):

  X   A   B  C D
1   1  12   0 12 0
2   2  24   0 15 0
3   3  56   0 48 0
4   4  89   0 96 0
5   5  13   3 65 0
6   6  11  16  0 0
7   7  25  19  0 0
8   8  24  98  0 0
9   9  18 111  0 0
10 10 173 125  0 0
11 11  10  65  0 0

我想用一个循环为每个组(1:11)创建一个条形图:

for(i in 1:11){x<-dummyloop[i,]
  barplot(as.matrix(x), main=paste("Group", i), ylim=c(0,200))}

这行得通,我为每个循环得到一个条形图,但是它们最终在一个 4 中通过用于绘制窗口,就好像我使用了 par(mfrow=c(4,4)) 一样。我需要单独的条形图。

所以我使用了 par(mfrow=c(1,1)),它出于某种原因解决了这个问题(我不使用 par EVER,因为我只导出具有单个图表的科学报告),但是“主要”在顶部被切断。

我还希望每个条都具有不同的颜色,所以我使用了:

 for(i in 1:11){x<-dummyloop[i,]
      barplot(as.matrix(x), main=paste("Group", i), col=c(1:5), 
ylim=c(0,200))}

意识到着色向量然后只使用第一种颜色,我尝试了这个的变体:

for(i in 1:11){x<-dummyloop[i,]
  barplot(as.matrix(x), main=paste("Group", i), col=c(4:10)[1:ncol(x)], 
ylim=c(0,200))}

这不成功...

我似乎在 for 循环中遗漏了一些关键细节,感谢您的帮助。感谢这里的人们,我是一名 R 新手,每天都在进步;)。

标签: r

解决方案


不知道,为什么那是在基础情节中。这是另一种方法ggplot2


for(i in 1:11){x<- gather(data[i,])
print(ggplot(data = x, aes(x = key, y = value, fill = cols)) +
  geom_bar(stat = "identity", show.legend = FALSE) + 
    ggtitle(paste("Group ", i)) + theme(plot.title = element_text(hjust = 0.5)) +
    ylim(0,200))  
  }

那你的main还断了吗?

然后扩展绘图顶部的边距。执行:


par(mar = c(2, 2, 3 , 2)) # c(bottom, left, top, right)

作图之前。dev.off()您可以在试验时重置您的规格。


推荐阅读