gpt4 book ai didi

r - 编写一个循环来创建具有不同数据源和标题的 ggplot 图形

转载 作者:行者123 更新时间:2023-12-02 12:47:26 25 4
gpt4 key购买 nike

我没有循环经验,但看起来我需要创建一些循环才能正确分析我的数据。您能展示如何在我已经创建的代码上创建一个简单的循环吗?让我们使用循环来获取一些图:

pdf(file = sprintf("complex I analysis", tbl_comp_abu1), paper='A4r')

ggplot(df_tbl_data1_comp1, aes(Size_Range, Abundance, group=factor(Gene_Name))) +
theme(legend.title=element_blank()) +
geom_line(aes(color=factor(Gene_Name))) +
ggtitle("Data1 - complex I")+
theme(axis.text.x = element_text(angle = 90, hjust = 1))

ggplot(df_tbl_data2_comp1, aes(Size_Range, Abundance, group=factor(Gene_Name))) +
theme(legend.title=element_blank()) +
geom_line(aes(color=factor(Gene_Name))) +
ggtitle("Data2 - complex I")+
theme(axis.text.x = element_text(angle = 90, hjust = 1))


ggplot(df_tbl_data3_comp1, aes(Size_Range, Abundance, group=factor(Gene_Name))) +
theme(legend.title=element_blank()) +
geom_line(aes(color=factor(Gene_Name))) +
ggtitle("Datas3 - complex I")+
theme(axis.text.x = element_text(angle = 90, hjust = 1))

dev.off()

现在的问题是我想实现什么目标。首先,我有大约 10 个复合体需要分析,这意味着应该创建 10 个 pdf 文件,并且该示例显示了该复合体的三个不同数据集的绘图。为了使其正确,变量 comp1 中的数字(来自 df_tbl_dataX_comp1)必须从 1 更改为 10 - 取决于我们要绘制哪个复数。接下来必须通过循环更改的是 pdf 文件的名称和每个图表...是否可以编写这样的循环?

数据:

structure(list(Size_Range = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 
3L, 3L, 3L, 4L, 4L, 4L, 5L, 5L, 5L, 6L, 6L, 6L, 7L, 7L, 7L, 8L,
8L, 8L, 9L, 9L, 9L, 10L, 10L, 10L, 11L, 11L, 11L, 12L, 12L, 12L,
13L, 13L, 13L, 14L, 14L, 14L, 15L, 15L, 15L, 16L, 16L, 16L, 17L,
17L, 17L, 18L, 18L, 18L, 19L, 19L, 19L, 20L, 20L, 20L), .Label = c("10",
"34", "59", "84", "110", "134", "165", "199", "234", "257", "362",
"433", "506", "581", "652", "733", "818", "896", "972", "1039"
), class = "factor"), Abundance = c(0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 142733.475, 108263.525, 98261.11, 649286.165,
3320759.803, 3708515.148, 6691260.945, 30946562.92, 180974.3725,
4530005.805, 21499827.89, 0, 15032198.54, 4058060.583, 0, 3842964.97,
2544030.857, 0, 1640476.977, 286249.1775, 0, 217388.5675, 1252965.433,
0, 1314666.05, 167467.8825, 0, 253798.15, 107244.9925, 0, 207341.1925,
15755.485, 0, 71015.85, 14828.5075, 0, 25966.2325, 0, 0, 0, 0,
0, 0), Gene_Name = c("AT1G01080", "AT1G01090", "AT1G01320", "AT1G01420",
"AT1G01470", "AT1G01560", "AT1G01800", "AT1G02150", "AT1G02500",
"AT1G02560", "AT1G02780", "AT1G02880", "AT1G02920", "AT1G02930",
"AT1G03030", "AT1G03090", "AT1G03110", "AT1G03130", "AT1G03220",
"AT1G03230", "AT1G03330", "AT1G03475", "AT1G03630", "AT1G03680",
"AT1G03870", "ATCG00420", "ATCG00470", "ATCG00480", "ATCG00490",
"ATCG00500", "ATCG00650", "ATCG00660", "ATCG00670", "ATCG00740",
"ATCG00750", "ATCG00842", "ATCG01100", "ATCG01030", "ATCG01114",
"ATCG01665", "ATCG00770", "ATCG00780", "ATCG00800", "ATCG00810",
"ATCG00820", "ATCG00722", "ATCG00744", "ATCG00855", "ATCG00853",
"ATCG00888", "ATCG00733", "ATCG00766", "ATCG00812", "ATCG00821",
"ATCG00856", "ATCG00830", "ATCG00900", "ATCG01060", "ATCG01110",
"ATCG01120")), .Names = c("Size_Range", "Abundance", "Gene_Name"
), row.names = c(NA, -60L), class = "data.frame")

最佳答案

这可能会起作用:启动两个循环,一个用于复杂迭代,第二个用于数据集迭代。然后使用 paste0()paste() 生成正确的文件名和标题。

PS:我没有测试代码,因为我没有你的数据。但它应该会给你一个想法。

#loop over complex    
for (c in 1:10) {

#create pdf for every complex
pdf(file = paste0("complex", c, "analysis.pdf"), paper='A4r')

#loop over datasets
for(d in 1:3) {

#plot
ggplot(get(paste0("df_tbl_data",d,"_comp",c)), aes(Size_Range, Abundance, group=factor(Gene_Name))) +
theme(legend.title=element_blank()) +
geom_line(aes(color=factor(Gene_Name))) +
ggtitle(paste0("Data",d," - complex ",c))+
theme(axis.text.x = element_text(angle = 90, hjust = 1))
}
dev.off()

}

关于r - 编写一个循环来创建具有不同数据源和标题的 ggplot 图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33260239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com