2012-07-24 9 views
7

Użycie pakietów knitr i markdown do przeplatania plików Rmd do przecen, a następnie html powoduje nieoczekiwane zachowanie w sposobie wyświetlania wykresów ggplot2 w ostatecznym pliku HTML.Graficzne subtelne zmiany po użyciu knitr ze znacznika

Na przykład, stosując następujący plik RMD diamond.Rmd

# ggplot2 graph shows up fainter, and text smaller 

```{r echo=FALSE, message=FALSE, warning=FALSE} 
opts_chunk$set(fig.width=18, fig.height=10) 
require(ggplot2) 
``` 

*** 

# Simple Plot 
```{r echo=FALSE, message=FALSE, warning=FALSE} 
data(diamonds) 
g <- ggplot(diamonds, aes(carat, depth, colour=color)) + geom_point() + facet_wrap(~cut) 
g 
``` 

z tym plikiem knit.R

require(markdown) 
require(knitr) 
knit('diamonds.Rmd') 
markdownToHTML('diamonds.md', 'diamonds.html', options=c('base64_images')) 
browseURL(paste('file://', file.path(getwd(), 'diamonds.html'), sep='')) 

Zrobiłem screeenshot działki w pliku html i włączone to poniżej (czy istnieje lepszy sposób, aby pokazać to?):

plot from html file

Wykres w pliku html jest jaśniejszy, tzn. Kolor jest mniej ciemny. Również tekst na wykresie, w tym etykiety osi i etykiety znaczników są mniejsze i lżejsze, co sprawia, że ​​są bardzo trudne do odczytania.

Jeśli spojrzysz na fabułę utworzoną bezpośrednio z R, zobaczysz, że nie ma takich problemów.

plot directly from R

Zgaduję to jest jakiś problem z moim urządzeniem graficznym lub urządzenia graficznej knitr korzysta.

Czy istnieje sposób na wymuszenie wykresów, które ostatecznie znajdą się w pliku html, aby zachować oryginalny wygląd wydruku, np. Aby pozostać ciemniejszy i mieć większy tekst?

+0

Dzięki za pytanie. Mam również ten sam problem - jakość wykresów ggplot2 generowanych przez Rmarkdown/kintr w RStudio w formacie html jest bardzo słaba w porównaniu do zwykłych urządzeń pdf lub png. Użycie opcji device = "png"/"pdf" zapisuje te wykresy w nowym folderze o nazwie figures, ale są one również niskiej jakości. –

+6

Problem to szerokość i wysokość, które podałeś. jeśli użyjesz 'fig.width = 7' i' fig.height = 7', powinieneś uzyskać takie same wyniki jak w konsoli, ponieważ jest to wartość domyślna. Zauważ, że możesz użyć opcji 'dpi' do kontrolowania rozmiaru piksela, ale bądź ostrożny, ponieważ ostateczny rozmiar będzie wynosił x szerokość. – Ramnath

+8

jeśli chcesz zachować ten sam rozmiar figury, ale masz większy rozmiar w pikselach, użyj 'fig.width = 9',' fig.height = 5' i 'dpi = 144' (domyślna rozdzielczość to 72). To da ci wykres o tym samym rozmiarze, ale z większymi pikselami i tekstem. – Ramnath

Odpowiedz

4

Jak sugeruje @Ramnath:

Jeśli chcesz zachować ten sam rozmiar rysunku, ale mają większe wykorzystanie rozmiar piksela:

fig.width = 9, fig.height = 5, dpi = 144

Domyślna dpi wynosi 72, to to daje działka o tym samym rozmiarze, ale z większymi pikselami i tekstem.

Powiązane problemy