use*_*611 6 excel plot r graph ggplot2
在我的数据中,我有多个国家,每个国家/地区有5个产品.我为每个组合执行了回归,现在我试图在每个组合上绘制预测值与同一图表上的实际值.
我总共有10个国家/地区,每个国家/地区在Excel文件中都有自己的标签.由于共有5个产品,因此总共有50个图表.我想在R中绘制图形并将它们循环导出到Excel.我正在使用excel.link包ggplot,我遇到的问题是图形在Excel中显示为空白区域,或者如果R中有一些图形 - 该图形显示而不是所需的图形.
**注意:我曾经在第一个图表中显示"未找到rversion"时出错,但现在我更新了我的RStudio,我不再收到此错误.图表仍然会导出为空白,或者显示上一个图表
这是一个简化的循环,类似于我的代码中的循环.如果我手动运行循环,通过i
每次更改,一切都可以导出.如果我运行for loop
,问题发生在我上面描述的:
require(excel.link)
set.seed(124)
for(i in 1:5){
# i <- 2
myseq <- seq(1,100, by=1)
norm <- rnorm(100)
mydata <- as.data.frame(cbind(myseq, norm))
colnames(mydata)
ggplot(data = mydata, aes(x=myseq, y=norm, group=1)) + geom_line(size=1, col="blue") +
ggtitle(paste("My Plot ", i))
y.plot=current.graphics()
xl[a1] = list(y.plot)
Run Code Online (Sandbox Code Playgroud)
}
首先,您应该在循环中显式打印 ggplot2 图形。其次,将 Excel 中的绘图放在同一张表中的相同位置。因此,您的图表会相互放置,并且您在 Excel 中只能看到最后一张图。在单独的工作表上显示绘图的代码:
library(excel.link)
library(ggplot2)
set.seed(124)
xl.workbook.add() # open new workbook
for(i in 1:5){
myseq <- seq(1,100, by=1)
norm <- rnorm(100)
mydata <- as.data.frame(cbind(myseq, norm))
colnames(mydata)
p = ggplot(data = mydata, aes(x=myseq, y=norm, group=1)) +
geom_line(size=1, col="blue") +
ggtitle(paste("My Plot ", i))
print(p) ## display ggplot graphics
y.plot=current.graphics()
xl.sheet.add() ## add new sheet in excel workbook
xl[a1] = y.plot
}
Run Code Online (Sandbox Code Playgroud)
在单张纸上从上到下显示绘图的代码:
library(excel.link)
library(ggplot2)
set.seed(124)
xl.workbook.add() # open new workbook
y.plot = lapply(1:5, function(i) {
myseq <- seq(1,100, by=1)
norm <- rnorm(100)
mydata <- as.data.frame(cbind(myseq, norm))
colnames(mydata)
p = ggplot(data = mydata, aes(x=myseq, y=norm, group=1)) +
geom_line(size=1, col="blue") +
ggtitle(paste("My Plot ", i))
print(p) ## display ggplot graphics
current.graphics()
})
xl[a1] = y.plot
Run Code Online (Sandbox Code Playgroud)