扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇文章给大家分享的是有关怎么用R代码自动批量生成PPT,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
网站设计制作、成都网站设计介绍好的网站是理念、设计和技术的结合。创新互联拥有的网站设计理念、多方位的设计风格、经验丰富的设计团队。提供PC端+手机端网站建设,用营销思维进行网站设计、采用先进技术开源代码、注重用户体验与SEO基础,将技术与创意整合到网站之中,以契合客户的方式做到创意性的视觉化效果。
[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,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流