2016-06-15 8 views
5

Używam R Markdown z knitr w R Studio, aby utworzyć i zaktualizować prostą witrynę projektu, aby utrzymać moich kolegów do przyspieszenia dzięki modelowi analizy danych, który buduję. Na stronie znajduje się kilka działek, które (dla mniejszych działek) sprawdziły się dobrze, mogą zobaczyć kod i wyniki w tym samym miejscu.Jaki jest prosty sposób miniaturowania niektórych działek w R Markdown/knitr?

Jednak niektóre działki stały się bardzo duże (i muszą pozostać duże, aby umożliwić szybkie porównywanie modeli) i nie pasują do strony bardzo dobrze. Do niektórych z nich użyłem oddzielnie przesłanych plików pdf (z linkiem na stronie). Byłoby przyjemniej, gdyby istniał prosty sposób generowania miniaturek niektórych z tych wykresów, aby użytkownik mógł zobaczyć mały obraz fabuły, kliknąć na niego, a następnie szczegółowo obejrzeć większy obraz. Jeśli jednak zajmie to dużo ręcznego skryptowania dla każdej instancji wydruku, wolałbym nie marnować na nią czasu i po prostu przesłać kilka plików pdf. Podobne pytanie: here mówi o pakiecie, knitrbootsrap, ale nie chcę miniaturować wszystkich moich działek, tylko kilka wybranych. Pakiet wydaje się używać Magnific popup, ale integrowanie go na stronie Markdown wydaje się kłopotliwe (?). Nie znalazłem nic w referencji R Markdown guide. Oczywiście jednym ze sposobów byłoby wygenerowanie dwóch wątków, jednej małej, która jest pokazana, i powiązanie jej z innym, większym obrazem/plikiem graficznym, który jest przesyłany oddzielnie - ale prostszy, bardziej automatyczny sposób byłby pożądany.

Stąd pytanie - czy istnieje prostszy sposób na wygenerowanie klikalnych miniaturek fabuły w R Markdown w postaci??

Odpowiedz

1

Oto, co wymyśliłem. Dodaj hak działki, tak aby wygenerować pdf pełnej rozdzielczości obraz przed wygenerowaniem mały obraz w kawałku:

allow_thumbnails <- function(x, options) { 
    if (!is.null(options$thumb)) { 
    filename <- sprintf("%s.full.pdf", strsplit(basename(x), "\\.")[[1]][1]) 
    absolute_path <- file.path(dirname(x), filename) 

    # generate the full resolution pdf 
    pdf(absolute_path, width = options$thumb$width, height = options$thumb$height) 
     eval(parse(text = options$code)) 
    dev.off() 

    # add an html link to the low resolution png 
    options$fig.link = absolute_path 
    } 

    knitr:::hook_plot_md_base(x, options) 
} 

A następnie w pliku RMD, zdefiniować rozmiar pełnej rozdzielczości obrazu przy użyciu thumb argumentem:

```{r init} 
    knit_hooks$set(plot = allow_thumbnails) 
``` 

```{r my_large_plot, fig.width = 15, fig.height = 15, thumb = list(width = 45, height = 45)} 
    my_large_plot() 
``` 

To generuje plik HTML z klikalny png, która zabierze Cię do pdf.

Powiązane problemy