使用geom_rect来遮蔽循环中生成的图形

时间:2015-07-28 10:26:15

标签: r ggplot2

我需要从文件夹中的多个制表符分隔文件制作图表。每个文件的一个图表。这些文件的第一列是相同的。我还必须在所有图中遮蔽一些区域,阴影区域对于所有文件都是相同的。着色的坐标位于不同的文件中。我可以使用以下代码从单个文件成功创建图表。

shading_cor<- read.table(file="shading", header=T, sep="\t") # importing shading cordinates
shading <- geom_rect(aes(NULL, NULL, xmin = start, xmax = end), ymin= -Inf, ymax=Inf, data=shading_cor, fill="grey80", alpha=0.2)
to_be_plotted <- read.table(file="plot_file", header=F, sep="\t") # one of the data files
ggplot() + 
  geom_line(data=melt(to_be_plotted, id = "V1", measure = c("V2", "V3")),  aes(V1, value, colour = variable)) +
  shading+theme_bw()

现在要在循环中制作图形,我大致使用这种语法,它为每个文件制作图表。我知道这不是最有效的方式,但作为初学者的目的。

my_files <- list.files(pattern=".txt") 
for (i in files){
  my_data  <- read.table(i, header=F )
  pdf(paste0(i,".pdf"))
  print (ggplot() + geom_line(data=melt(my_data, id = "V1", measure = c("V2", "V3")),  aes(V1, value, colour = variable)))
  dev.off
}

然而,要遮盖上面循环所做的所有绘图,我修改后面的代码

shading_cor <- read.table(file="shading", header=T, sep="\t") # importing shading cordinates
shading <- geom_rect(aes(NULL, NULL, xmin = start, xmax = end), ymin= -Inf, ymax=Inf, data=shading_cor, fill="grey80", alpha=0.2)
my_files <- list.files(pattern=".txt") 
for (i in files){
  my_data  <- read.table(i, header=F )
  pdf(paste0(i,".pdf"))
  p1 <- ggplot() + geom_line(data=my_data(graph, id = "V1", measure = c("V2", "V3")),  aes(V1, value, colour = variable)
  print (p1 + shading)
  dev.off
}`

循环跟随代码会导致错误:

  

“参数意味着不同的行数:0,32调用:打印...   as.data.frame - &gt; as.data.frame.list - &gt; eval - &gt; eval - &gt; data.frame“

我不知道这里有什么问题。我相信我一定是犯了一些非常愚蠢的错误。我将很感激解决方案。 编辑 - 一些测试数据

> dput(test1.txt)
structure(list(X20 = c(21L, 22L, 23L, 24L, 24L, 26L, 27L, 28L, 
29L, 30L), X0 = c(5L, 0L, 7L, 3L, 3L, 4L, 5L, 5L, 4L, 3L), X.5 = c(-2, 
0, -12, -5, -6, -5, -4, -4, -3, -2)), .Names = c("X20", "X0", 
"X.5"), class = "data.frame", row.names = c(NA, -10L))
> dput(test2.txt)
structure(list(X20 = c(21L, 22L, 23L, 24L, 24L, 26L, 27L, 28L, 
29L, 30L), X0 = c(5L, 0L, 0L, 3L, 2L, 4L, 4L, 3L, 2L, 1L), X.2 = c(-3L, 
0L, 0L, -4L, -3L, -3L, -2L, 0L, -3L, -2L)), .Names = c("X20", 
"X0", "X.2"), class = "data.frame", row.names = c(NA, -10L))
> dput(test3.txt)
structure(list(X20 = c(21L, 22L, 23L, 24L, 24L, 26L, 27L, 28L, 
29L, 30L), X0 = c(0L, 2L, 2L, 3L, 3L, 4L, 4L, 3L, 2L, 1L), X.2 = c(-3L, 
-3L, -3L, -4L, -3L, -2L, -2L, -1L, 0L, 0L)), .Names = c("X20", 
"X0", "X.2"), class = "data.frame", row.names = c(NA, -10L))

和阴影协调可能就像

start  end
20     22
25     27
29     30

0 个答案:

没有答案