2012-11-27 16 views
5

Sto usando knitr con grafici. Vorrei ruotare uno di loro di 90 gradi. Ad esempio:Come ruotare un grafico su molti quando si usa knitr?

\documentclass{article} 

\begin{document} 


<<cache=TRUE, echo=FALSE, message=FALSE, warning=FALSE, comment=NA, eval=TRUE, results=asis>>= 

library("ggplot2") 
library("gridExtra") 

func <- function(data,x,y) { 

    p1 <- ggplot(data.frame(data), aes(x = x, y = y)) + geom_point() 
    p2 <- ggplot(data.frame(data), aes(x = x, y = y)) + geom_point() 
    p3 <- ggplot(data.frame(data), aes(x = x, y = y)) + geom_point() 
    p4 <- ggplot(data.frame(data), aes(x = x, y = y)) + geom_point() 

    grid.newpage() 
    pushViewport(viewport(width = .9, height = .9,layout = grid.layout(nrow=2, ncol=2))) 
    print(p1,vp = viewport(layout.pos.row = 1, layout.pos.col = 1)) 
    print(p2,vp = viewport(layout.pos.row = 2, layout.pos.col = 1)) 
    print(p3,vp = viewport(layout.pos.row = 1, layout.pos.col = 2)) 
    print(p4,vp = viewport(layout.pos.row = 2, layout.pos.col = 2)) 

    grid.newpage() 
    pushViewport(viewport(width = .8, height = .5,layout = grid.layout(nrow=1, ncol=2))) 
    print(p1,vp = viewport(layout.pos.row = 1, layout.pos.col = 1)) 
    print(p2,vp = viewport(layout.pos.row = 1, layout.pos.col = 2)) 

} 

x <- runif(20,0,1) 
y <- rnorm(20) 
test <- cbind(x,y) 
func(test,x=test$x,y=test$y) 

@  

\end{document} 

desidero ruotare sia la seconda pagina e il grado grafico 90. So che posso usare questo per una pagina:

\usepackage{pdflscape} 
\begin{landscape} 
.... 
\end{landscape} 

Ma le due trame sono disposti da grid.newpage() all'interno di una funzione. Come posso ottenerlo? Molte grazie!

+1

nota che si sono tenuti a scrivere 'risultati = 'asis'' anziché' asis'. Come mostra la risposta qui sotto, questo (rotazione di 90 gradi) è l'esempio usato nella documentazione. –

risposta

8

Penso che si possa utilizzare out.extra nelle opzioni Chunk:

Da docs knitr: http://yihui.name/knitr/options

out.extra: (NULL; caratteri) opzioni extra per le figure, per esempio out.extra = 'angle = 90' in LaTeX output ruoterà la cifra di 90 gradi; può essere una stringa arbitraria, ad es. è possibile scrivere più opzioni di figura in questa opzione; si applica anche alle immagini HTML (extra opzioni saranno scritti nel tag, ad esempio out.extra = 'style = "display: block;"')

<<out.extra='angle=90', cache=TRUE, echo=FALSE, message=FALSE, warning=FALSE, comment=NA, eval=TRUE, results='asis'>>= 
# ... 
@ 
+0

Grazie. Può essere come 'out.extra = 'angle = c (0,90)'' perché ho due grafici e voglio solo ruotare il secondo. – Autumn

+0

I due grafici devono essere in blocchi separati se si desidera dichiarare diverse opzioni per essi. –

+0

@Yihui Funziona anche nei documenti Rmd? –

Problemi correlati