溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用R代碼自動批量生成PPT

發(fā)布時間:2022-01-05 18:01:05 來源:億速云 閱讀:201 作者:柒染 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關怎么用R代碼自動批量生成PPT,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

[1]第一步加載包

  #*~*#數(shù)據(jù)處理包#*~*#

  library(ggplot2) #作圖包

  library(dplyr) #數(shù)據(jù)轉(zhuǎn)換包

  library(tidyr) #數(shù)據(jù)轉(zhuǎn)換包

  library(jpeg)#加載圖片

  library(scales)

  library(plyr)

  library(tibble)

  library(gridExtra)

  library(splines2) #數(shù)據(jù)差值包

  library(reshape2)#數(shù)據(jù)重塑包

  library(stringr)#字符串工具集

  library(showtext)#作圖使用中文包

  library(xlsx)#excel處理

  #*~*#制作ppt包#*~*#

  library(ReporteRs)

  library(R2PPT)

  library(ggplot2)

[2]第二步數(shù)據(jù)處理、繪制要放進PPT的圖形

 2.1數(shù)據(jù)讀取

 a1<-read.csv(Rdata)  #由于有些數(shù)據(jù)比較敏感,所以只展示讀取方法

 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)#把縱坐標軸變?yōu)榘俜直?/p>

    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)#把縱坐標軸變?yōu)榘俜直?/p>

  }

  #*~*#全自動畫橫向條形線圖#*~*#

  #*~*#畫橫向條形線圖具體代碼#*~*#

  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的代碼做成函數(shù),寫循環(huán)調(diào)用批量生成PPT

setwd("D:/工作文件夾/全自動化出PPT")

Rdata="D:/工作文件夾/全自動化出PPT/201701-201907.csv"#原始大表數(shù)據(jù)

for (i in 1:100)

{

  cn<-sub('........$','',aa2[i])#從字符串里刪除特定字符串

  name=as.character(aa2[i])#店面名稱

 output=paste("D:/工作文件夾/全自動化出PPT/自動做出的PPT6/",name,"(第",i,"個地區(qū))ppt.pptx",sep="")

  dianmian_ppt(Rdata,name,output)

}

#Rdata是原始數(shù)據(jù),name是經(jīng)銷商名稱,output是ppt輸出的地址

[5]總結

通過以上四步可以一次生成所需PPT。如果數(shù)據(jù)的表頭不變,每周要出報表的話,一次寫好腳本,可以每周自動執(zhí)行,原來做一份PPT需要半個小時的話現(xiàn)在只需1分鐘左右或者更短,如果一次要做100份或者更多,寫腳本顯然更節(jié)省時間,也可以避免人工處理數(shù)據(jù)過程中出現(xiàn)的計算錯誤。

以上就是怎么用R代碼自動批量生成PPT,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI