我有一个工作循环,它可以生成并保存目录中保存的每个文件的各个图.
我想将单个文件中的所有返回的绘图绘制为多个页面上的2x2网格,但不能这样做.
我试图将绘图对象保存在列表中
pltList <- list()
pltList[]
for (f in 1:length(files)){
plot_object <- ggplot2(...) #make ggplot2 plot
print(plot_object)
pltList[[f]] <- plot_object #save ggplot2 plot in list
}
jpeg(filename.jpg)
par(mfrow=c(2,2)) #to generate 2x2 plot per page
print(pltList[[1]])
print(pltList[[2]])
...
print(pltList[[f]])
dev.off()
Run Code Online (Sandbox Code Playgroud)
问题是得到的保存的.jpg文件只包含最后一个图,而不是所有图上的所有图的2x2网格,这就是我想要的.
编辑
我的第一个问题是如何从列表中的循环中保存每个绘图 - 如何从列表中查看保存的对象以确保它们已正确保存?当我这样做时print(pltList[1]),结果输出是:
function (x, y, ...)
UseMethod("plot")
<bytecode: 0x0000000010f43b78>
<environment: namespace:graphics>
Run Code Online (Sandbox Code Playgroud)
而不是实际的情节.看起来这些图未按预期保存在列表中.我怎么能纠正这个?希望,一旦修复,您的绘图建议将起作用.
我想执行R 将因子 YYYY-MM 转换为 date的反向操作。
我有一个数据框 (df),日期显示为 YYYY-MM-DD 格式(列“Date1”),并希望将它们转换为 YYYY-MM 格式。天数范围在 0-31 之间,但对于我的 YYYY-MM 格式,这些不是必需的。
关键是我有另一组 YYYY-MM 格式的列(列“Date2”),并且想要计算它们在整个月份之间的差异(“Difference(months)”列中的 x、y 和 z 值)
Date1 Date2 Difference(months)
2008-08-11 1995-02 x
2010-06-18 1972-09 y
2011-04-22 1956-11 z
Run Code Online (Sandbox Code Playgroud)
做df$Date1_new <- as.Date(df$Date1, "%Y-%m")只是给出了一系列的“NA”值。
请你能给我一种方法来满足我的要求,或者另一种更简单的方法来提供相同的预期结果吗?
我的问题非常类似于添加图例到ggplot2线图,除了我有多种颜色的情况 - 每个条件1,但它们没有绘制到一个常见的x轴值.相反,我有2个x轴值,使用的值取决于条件.
示例数据:
# dataframe name = df
e0 e200 o0 o50 o200
0.5715707 0.5755010 0.9151736 0.8858229 1.2488826
0.5570928 0.5610231 0.8724417 0.8851889 1.2135041
0.5430821 0.5470124 0.8692482 0.8793603 1.2051914
0.5295093 0.5334396 0.8251555 0.8636917 1.0951763
0.5163479 0.5202782 0.8149114 0.8519220 1.0787246
0.5035736 0.5075039 0.7875460 0.7521003 1.0655470
0.4911643 0.4950946 0.7724218 0.7394516 1.0616154
0.4790998 0.4830301 0.7306038 0.6997307 1.0214771
0.4673614 0.4712917 0.6373668 0.6333903 0.9179331
0.4559320 0.4598622 0.5898641 0.6314342 0.8713423
0.4447956 0.4487259 0.5870693 0.6266098 0.8208793
Run Code Online (Sandbox Code Playgroud)
R脚本:
ggplot(df) +
geom_line(aes(x = e0,y = o0), size …Run Code Online (Sandbox Code Playgroud)