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