[SLD] Grafi v PPT
Contents
“No more than six words on a slide. EVER”
Seth Godin
Graf iz R v Power Point
Za prenos grafa iz R v PP je kar nekaj metod:
Najenostavneje je kopirati iz RSTUDIO preko odložišča.
- Lahko shraniš z ggsave() in potem uvoziš kot sliko v PP (lahko tudi kot povezavo).
- Lahko uporabiš metode iz knjižnice oficcer.
Zadnja metoda se mi zdi najbolj uporabna, ko moraš prenesti večje število grafov, katerih število je na začetku nepoznano, kot na primer iz kakšne for zanke.
library(ggplot2)
library(magrittr)
library(officer)
# Uporabiš lahko prazno podlogo ali pa že obstoječo
moja_podloga <- officer:: read_pptx()
#moja_podloga <- officer::read_pptx("./lib/podloga.pptx")
# s tem stavkom pogledaš, kaj je v podlogi, ker boš potreboval v stavku add_slide()
#layout_summary(moja_podloga)
for(i in seq(1:3)){
set.seed(i)
df <- data.frame(x=seq(1,100), y=rnorm(n=100)) #100 naključnih števil
p1 <- ggplot(data=df, aes(x=x,y=y, group=1)) + theme_minimal() +
geom_line() + ggtitle(paste("GRAF",i))
moja_podloga <- moja_podloga %>%
add_slide(layout = "Blank", master = "Office Theme")
moja_podloga <- moja_podloga %>%
ph_with(value = p1, location = ph_location_fullsize())
print(p1) #prikaže vse grafe, drugače v for stavku tega ne prikaže
}
#Shrani (tukaj sem zakomentiral)
#print(moja_podloga, target = "Grafi.pptx") #shranim v datoteko vse grafe.
Graf iz Python v Power Point
Podobno kot s paketom officer v R je v Python paket python-pptx. Mogoče ne tako elegantno, pa vseeno.
Vzorci se nahajajo TUKAJ.
Še ena zanimivost, kako ni potrebno shraniti je TUKAJ
Nekaj podobnega, kot je bilo v R je sedaj tukaj:
import numpy as np
import pandas as pd
from io import BytesIO
from pptx import Presentation
prs = Presentation()
for i in range(1,4):
np.random.seed(i)
df = pd.DataFrame({"x": range(1,101)})
df['y'] = np.random.randn(100)
p1 = df.plot(x='x', y='y', kind = 'line').get_figure()
image_stream = BytesIO() # To z BytesIO je, da ne rabim shraniti slike na disk.
p1.savefig(image_stream, format='PNG')
slide = prs.slides.add_slide(prs.slide_layouts[6]) #Layout 6 je pri meni prazen layout.
pic = slide.shapes.add_picture(image_stream, left=1, top=1)
prs.save('Test.ppt')
Author SlanaD
LastMod 2019-09-14