我对 R 和 ggplot2 很陌生。我正在尝试使用 for 循环创建相关图的网格以及它们的尾随最大值和最小值。然后将绘图以 PDF 格式保存到目录中。当它们被保存时,蓝线(最小最大)被正确绘制。但是,当我随后使用 do.call(grid.arrange,t) 或任何其他调用列表中的图时。你没有得到正确的蓝线,但最后一个地块蓝线填充了所有地块。
我不明白这如何正确绘制和保存 pdf,但不能将 ggplot 对象正确存储在 t list() 中,或者使用 do.call(grid.arrange,t) 在渲染中如何存在一些混淆。原始线(黑色)如何正确绘制,但 geom_line 添加不正确?我真的很困惑。
如果有人可以帮助我检查此代码并了解如何正确绘制所有线条,然后将它们放在一个很棒的网格中。
下面使用随机数据的可重现代码
require(TTR)
require(ggplot2)
library(gridExtra)
set.seed(12345)
filelocation = "c:/"
values <- as.data.frame(matrix( rnorm(5*500,mean=0,sd=3), 500, 5))
t <- list()
rollLength = 25
for( i in 1:(ncol(values)))
{
p <- ggplot(data=values, aes(x = index(values)) )
p <- p + geom_line(data=values, aes_string(y = colnames(values)[i]))
p <- p + geom_line(data = values, aes(x = index(values), y = runMax(values[,i], n = rollLength) ), colour = "blue", linetype = "longdash" )
p <- p + geom_line(data = values, aes(x = index(values), y = runMin(values[,i], n = rollLength) ), colour = "blue", linetype = "longdash" )
p <- p + ggtitle(colnames(values)[i]) + xlab("Date") + ylab("Pearson Correlation")
print(p)
ggsave( file = paste(colnames(values)[i],".pdf",sep = "") , path = filelocation)
assign(paste("p", i, sep = ""), p)
t[[i]] <- p
}
do.call(grid.arrange,t)