我有R代码使用ggplot2软件包和函数ggplot
创建100个单独的线图(每个图2条线,以及100个患者的100个此类图)。我不确定如何使代码原子化,以便使用文件名=患者编号创建每个图,每个图上的标题=患者编号,然后将这100个图直接保存到文件夹中。
我尝试使用函数创建一个循环来制作图形,然后使用ggsave
保存它们。但是在调用我的函数时,似乎什么都没有发生。不知道如何解决。我只有10位患者尝试过。
我的数据:是100位患者对22个问题(通过问卷调查)的回答。有100列-每位患者一列,共44行。前22行用于患者给出的实际反应(Grp = A),后22行用于正确应该做出的反应(Grp = B)。
#Column names = patient no.
Patno <- c("P_1", "P_2", "P_3", "P_4", "P_5" ,"P_6" ,"P_7", "P_8", "P_9", "P_10")
#The text to be printed on each plot
Plno <- c("0001", "0002", "0003", "0004", "0005", "0006", "0007", "0008", "0009", "00010")
# create graphing function
pdf.graph <- function(df){
for (i in Patno){
p <- ggplot(data=df, aes_string(x="QN", y="Patno[i]", group="Grp")) +
geom_line(aes_string(color="Grp", linetype="Grp", size="Grp")) +
geom_point(aes_string(color="Grp"))
p1 <- p +
scale_linetype_manual(values = c("solid", "dotted")) +
scale_color_manual(values = c('#E69F00','#999999')) +
scale_size_manual(values = c(1.25, 1)) +
theme_bw() +
theme(panel.border = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black"),
legend.position="none") +
scale_x_continuous(name = " ", limits = c(1, 22),
breaks=seq(1,22), expand = c(0, 0) ) +
scale_y_discrete(name=" ",
labels = c("TRUE" = "T", "FALSE" = "F", "Don't Know" = "DK")) +
annotate(geom = 'text', label = " Plno[i]",
x = -Inf, y = Inf, hjust = 0, vjust = 1)
# save plots as .pdf
ggsave(plot,
file = paste(resullts, 'projection_graphs/county_graphs/',
Plno[i], ".pdf", sep=''),
scale = 2)
print(p1)
dev.off()
}
}
pdf.graph(df)
当我使用数据集df调用该函数时,没有错误,但是没有产生o / p。关于如何解决这个问题,我将非常感谢您的答复。对我来说真的很重要。我尝试了多种方法。