2017-06-09 6 views
1

Ich verwende die knitr::opts_chunk$set(fig.align = "center") am Anfang des Rmarkdown-Dokuments, um die Ausrichtung der Figuren zu setzen. Wenn ich HTML-Dateien ausgabe, sind die statischen Figuren auf die Mitte ausgerichtet, aber die HTML-Widgets, wie Ausgaben von leaflet() und ggplotly() haben die Standardausrichtung (auf der linken Seite). Gibt es eine Option, um die HTML-Widgets in die Mitte zu zwingen?HTML-Widgets Ausrichtung in rmarkdwon

EDIT: Beispiel unten angegeben.

--- 
title: "test" 
output: html_document 
--- 

```{r setup, include=FALSE} 
knitr::opts_chunk$set(echo = TRUE, fig.align = "center") 
library(ggplot2) 
library(plotly) 
``` 

```{r static plot} 
# This is aligned to center 

g <- ggplot(mtcars, aes(mpg, cyl)) + 
geom_point() 
g 
``` 

```{r html widget} 
# html output isn't aligned 
p <- ggplotly(g) 
p 
``` 
+0

Diese helfen könnten: https://stackoverflow.com/questions/39562947/how-to -arrange-html-widgets-inside-of-a-rmarkdown-document-pdf-html –

+0

Während es einen besseren Weg gibt, verwende ich normalerweise CSS, um HTML-Widgets zu positionieren. Wenn Sie ein Beispiel veröffentlichen, würde ich gerne zeigen. –

+0

Aktualisiert mit Beispiel. –

Antwort

0

Sie könnten die Handlung auf die Standardbreite des Dokuments die Größe und dann einige CSS:

--- 
title: "Untitled" 
output: html_document 
--- 

<style> 
/* resize the widget container */ 
.plotly { 
    width: 100% !important; 
} 

/* center the widget */ 
div.svg-container { 
    margin: auto !important; 
} 
</style> 

```{r setup, include=FALSE} 
knitr::opts_chunk$set(echo = TRUE, fig.align = "center") 
library(ggplot2) 
library(plotly) 
``` 


```{r static plot} 
# This is aligned to center 
g <- ggplot(mtcars, aes(mpg, cyl)) + 
geom_point() 
g 
``` 

```{r html widget} 
p <- ggplotly(g, browser.fill = F) %>% 
    layout(autosize = F, width = '100%', height = '100%') 
p 
``` 
+0

Danke für Ihre Antwort. Während dies mein Problem löst, mag ich nicht die Tatsache, dass ich am Anfang des Skripts einige CSS-Codes hinzufügen muss, und es ist nicht sehr verallgemeinerbar, wenn ich auch eine Flugblatt-Map habe, die ich anpassen möchte. Verstehen Sie die Funktion 'styleWidget' [hier] (https://stackoverflow.com/a/39607828/4227151). Ich wünschte, ich könnte den Autor direkt fragen, aber ich habe nicht genug Reputation, um zu kommentieren. –