您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關怎么用R代碼自動批量生成PPT,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
[1]第一步加載包
#*~*#數據處理包#*~*#
library(ggplot2) #作圖包
library(dplyr) #數據轉換包
library(tidyr) #數據轉換包
library(jpeg)#加載圖片
library(scales)
library(plyr)
library(tibble)
library(gridExtra)
library(splines2) #數據差值包
library(reshape2)#數據重塑包
library(stringr)#字符串工具集
library(showtext)#作圖使用中文包
library(xlsx)#excel處理
#*~*#制作ppt包#*~*#
library(ReporteRs)
library(R2PPT)
library(ggplot2)
[2]第二步數據處理、繪制要放進PPT的圖形
2.1數據讀取
a1<-read.csv(Rdata) #由于有些數據比較敏感,所以只展示讀取方法
2.2繪圖
#*~*#全自動畫折線圖 #*~*#
line_chart<-function(shuju,F)
{
test1<-shuju
test1<-test1[F]
N=ncol(test1)
for (i in 2:N)
{
test1[,i]<-round(test1[,i], 3)
test1[,i]<-round(test1[,i], 3)
}
name<-names(test1)
xname<-name[1]
test1[,1]<-factor(test1[,1])
test1<-melt(test1, id = xname)
p<-ggplot(test1, aes(x =test1[,1], y =value,colour= variable,group=variable))
p<-p+geom_line(size=1)
p<-p+geom_point(size=1.5)
p<-p+labs(x="" ,y="",title="")
p<-p+geom_text(aes(label=paste(test1$value*100,'%',sep = ''), fill=variable),vjust = -0.5, colour = "black", position = position_dodge(0.5), size =4, face= "bold")
p<-p+theme_bw()
p<-p+theme_light()
pp=seq(0.1,1,by=0.1)
p<-p+scale_y_continuous(labels = percent,breaks =pp)#把縱坐標軸變為百分比
p<-p+theme(legend.title=element_blank())
p<-p+theme(axis.text.y= element_text(size=10,color="black", face= "bold", vjust=0.5, hjust=0.5))
p<-p+theme(axis.text.x= element_text(size=10, color="black", face= "bold", vjust=0.5, hjust=0.5))
#legend_position<-theme(legend.position="top")
#p<-p+legend_position
}
#*~*#全自動畫折線圖#*~*#
#*~*#畫折線圖具體代碼#*~*#
p1=line_chart(shuju=c1,F=PF1[[1]])
p2=line_chart(shuju=c1,F=PF1[[2]])
p3=line_chart(shuju=c1,F=PF1[[3]])
p4=line_chart(shuju=c2,F=PF1[[1]])
p5=line_chart(shuju=c2,F=PF1[[2]])
p6=line_chart(shuju=c2,F=PF1[[3]])
#*~*#畫折線圖具體代碼#*~*#
#*~*#全自動畫橫向條形線圖#*~*#
H_bar_chart_fun<-function(shuju,F)
{
shuju<-shuju
shuju<-shuju[F]
N=ncol(shuju)
for (i in 2:N)
{
shuju[,i]<-round(shuju[,i], 3)
shuju[,i]<-round(shuju[,i], 3)
}
name<-names(shuju)
xname<-name[1]
shuju[,1]<-factor(shuju[,1])
shuju<-melt(shuju,id=xname)
shuju$sum<-tapply(shuju$value,shuju[,1],sum)
shuju[,1]<-reorder(shuju[,1],shuju$sum)
shuju<- shuju[order(-shuju$sum),]#降序排列
p<-ggplot(shuju, aes(x =shuju[,1], y =value))
p<-p+theme_bw()
p<-p+theme_light()
p<-p+geom_bar(aes(fill=variable),stat = "identity",position = "dodge",width=0.8)
p<-p+labs(x="" ,y="",title="")
p<-p+coord_flip()
p<-p+geom_text(aes(label=paste(shuju$value*100,'%',sep = ''),fill=variable),vjust =0.3,hjust=-0.1,colour = "black", position = position_dodge(0.7), size =4)
p<-p+theme(legend.title=element_blank())
p<-p+theme(
legend.position = c(0.95, .05),
legend.justification = c("right", "bottom"),
legend.box.just="right",
legend.margin=margin(6, 6, 6, 6)
)
p<-p+theme(axis.text.y= element_text(size=10,color="black", face= "bold", vjust=0.5, hjust=0.5))
p<-p+theme(axis.text.x= element_text(size=15, color="black", vjust=0.5, hjust=0.5))
pp=seq(0.1,1,by=0.1)
p<-p+scale_y_continuous(labels = percent,breaks =pp)#把縱坐標軸變為百分比
}
#*~*#全自動畫橫向條形線圖#*~*#
#*~*#畫橫向條形線圖具體代碼#*~*#
p7=H_bar_chart_fun(shuju=c3,F=PF3[[1]])
p8=H_bar_chart_fun(shuju=c3,F=PF3[[2]])
p9=H_bar_chart_fun(shuju=c3,F=PF3[[3]])
[3]第三步制作ppt
ppt<-pptx(template = "cga_template.pptx") #自己想要的母版
slide.layouts(ppt,'Comparison')
#第一張PPT
ppt<-addSlide(ppt,slide.layout="Title Slide")
options("ReporteRs-fontsize"=26)#設置默認大小
ppt<-addTitle(ppt,value = c(name))
#第二張PPT
ppt<-addSlide(ppt,slide.layout="Title and Content")
options("ReporteRs-fontsize"=8)#設置默認大小
x21<-paste(cn,"30+逾期",sep="")
ppt<-addTitle(ppt,x21)
x22<-paste(cn,t,"至",t1,"共放款",fangkuan,"臺,","逾期",yuqi,"臺,","逾期率為",yuqilv,sep="")
x23<-paste("新車放款",xcfangkuan,"臺,","逾期",xcyuqi,"臺,","逾期率為",xcyuqilv)
x24<-paste("二手車放款",escfangkuan,"臺,","逾期",escyuqi,"臺,","逾期率為",escyuqilv)
ppt<-addParagraph(ppt,value = c("",x22,x23,x24))
#第三張PPT
ppt<-addSlide(ppt,"Title and Content")
x3<-paste(cn,"各月拒絕與全國對比(其中",t,"起申請",sqliang,"單,","拒絕",jujueliang,"單)",sep="")
#ppt<-addTitle(ppt,"長沙各月拒絕與全國對比(其中2017年1月起申請2776單,拒絕523單)")
#####
#time="2017年1月"
#a=2776
#b=523
#x3<-paste(cn,"各月拒絕率與全國對比(其中","time","起申請",a,"單)",sep="")
ppt<-addTitle(ppt,x3)
###
ppt<-addPlot(ppt,print,x=p1,width=13,height=6)
#第四張ppt
ppt<-addSlide(ppt,"Title and Content")
x4<-paste(cn,"新車各月拒絕與全國對比",sep="")
ppt<-addTitle(ppt,x4)
#ppt<-addTitle(ppt,"長沙新車各月拒絕與全國對比")
ppt<-addPlot(ppt,print,x=p2,width=13,height=6)
#第五張PPT
ppt<-addSlide(ppt,"Title and Content")
x5<-paste(cn,"二手車各月拒絕與全國對比",sep="")
ppt<-addTitle(ppt,x5)
#ppt<-addTitle(ppt,"長沙二手車各月拒絕與全國對比")
ppt<-addPlot(ppt,print,x=p3,width=13,height=6)
writeDoc(ppt,file="ppt.pptx")
#第六張PPT
ppt<-addSlide(ppt,"Title and Content")
x6<-paste(cn,"各月偽冒率與全國對比",sep="")
ppt<-addTitle(ppt,x6)
#ppt<-addTitle(ppt,"長沙各月偽冒率與全國對比")
ppt<-addPlot(ppt,print,x=p4,width=13,height=6)
writeDoc(ppt,file="ppt.pptx")
#第七張PPT
ppt<-addSlide(ppt,"Title and Content")
x7<-paste(cn,"新車各月偽冒率與全國對比",sep="")
ppt<-addTitle(ppt,x7)
#ppt<-addTitle(ppt,"長沙新車各月偽冒率與全國對比")
ppt<-addPlot(ppt,print,x=p5,width=13,height=6)
writeDoc(ppt,file="ppt.pptx")
#第八張PPT
ppt<-addSlide(ppt,"Title and Content")
x8<-paste(cn,"二手車各月偽冒率與全國對比",sep="")
ppt<-addTitle(ppt,x8)
#ppt<-addTitle(ppt,"長沙二手車各月偽冒率與全國對比")
ppt<-addPlot(ppt,print,x=p6,width=13,height=6)
#第九張PPT
ppt<-addSlide(ppt,"Title and Content")
x9<-paste(cn,"拒絕原因與全國對比",sep="")
ppt<-addTitle(ppt,x9)
ppt<-addPlot(ppt,print,x=p7,width=13,height=6)
#第十張PPT
ppt<-addSlide(ppt,"Title and Content")
x10<-paste(cn,"新車拒絕原因與全國對比",sep="")
ppt<-addTitle(ppt,x10)
ppt<-addPlot(ppt,print,x=p8,width=13,height=6)
#第十一張PPT
ppt<-addSlide(ppt,"Title and Content")
x11<-paste(cn,"二手車拒絕原因與全國對比",sep="")
ppt<-addTitle(ppt,x11)
#ppt<-addTitle(ppt,"長沙二手車各月偽冒率與全國對比")
ppt<-addPlot(ppt,print,x=p9,width=13,height=6)
#第十二張PPT
ppt<-addSlide(ppt,slide.layout="Title Slide")
options("ReporteRs-fontsize"=26)#設置默認大小
ppt<-addTitle(ppt,value = c("謝謝"))
writeDoc(ppt,file=output)
[4]第四步把制作ppt的代碼做成函數,寫循環調用批量生成PPT
setwd("D:/工作文件夾/全自動化出PPT")
Rdata="D:/工作文件夾/全自動化出PPT/201701-201907.csv"#原始大表數據
for (i in 1:100)
{
cn<-sub('........$','',aa2[i])#從字符串里刪除特定字符串
name=as.character(aa2[i])#店面名稱
output=paste("D:/工作文件夾/全自動化出PPT/自動做出的PPT6/",name,"(第",i,"個地區)ppt.pptx",sep="")
dianmian_ppt(Rdata,name,output)
}
#Rdata是原始數據,name是經銷商名稱,output是ppt輸出的地址
[5]總結
通過以上四步可以一次生成所需PPT。如果數據的表頭不變,每周要出報表的話,一次寫好腳本,可以每周自動執行,原來做一份PPT需要半個小時的話現在只需1分鐘左右或者更短,如果一次要做100份或者更多,寫腳本顯然更節省時間,也可以避免人工處理數據過程中出現的計算錯誤。
以上就是怎么用R代碼自動批量生成PPT,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。