2016-03-03 2 views
0

Надеюсь, вопрос правильно указан. Я хотел бы создать для дидактических целей документ knitr, где выходы R-базовой графической системы и выходы пакета Lattice сравниваются в панели. Рассмотрим числовой вектор:Панель с различными графическими пакетами цифры

```{r dataload} 
e2 <- c(72, 79, 81, 80, 63, 62, 89, 90, 50, 78, 87, 97, 55, 69, 97, 87, 
     88, 99, 76, 78, 65, 77, 88, 90, 81) 
``` 

Я попытался создать панель со следующим кодом:

```{r plots} 
par(mfrow = c(1,2)) #Set 1 row 2 columns panel 
hist(e2)    #Base graphic histogram on the left 
histogram(~e2)   #Lattice histogram on the right 
``` 

Но гистограмма Lattice закрывает панель, удаление базовой графики гистограммы.

Ожидаемый результат:

Панель должна сообщить базовый график на стороне и решетчатого графа на другой, подобно произведению этого действительно красивый post. К сожалению, блог не объясняет, как создается результат, и я не нашел дополнительной информации о проблеме. Я мог бы легко создать два разных изображения, но я думаю, что представление панели создает более красиво сопоставимый результат.

Большое спасибо за ваше терпение.

+0

Возможно, связано: [объединить график решетки и стандартный график R] (http://r.789695.n4.nabble.com/combine-lattice-plot-and-standard-R-plot-td3496409.html#a3497717) , Однако для этого конкретного вопроса две независимые фигуры, размещенные бок о бок, могут быть обходным путем. Каков желаемый формат вывода? –

+0

В соответствии с материалом, который вам предлагается, решетка и базовая система несовместимы. Существуют ограничения в совместимости между базой и сеткой (решетка построена на последнем). Следовательно, я думаю, что не могу не попробовать другой подход. Большое спасибо за Вашу помощь. – Worice

+0

Ну, в соответствии с [статьей] (http://cran.r-project.org/doc/Rnews/Rnews_2003-2.pdf) ссылки Марка Диффорда, объединяя решетчатые и базовые графики не невозможно. Но в вашем случае самым простым решением будет создание двух отдельных цифр. –

ответ

1

Как обсуждалось, here on the R mailing list, совместимость lattice и базовая графика R ограничены. article, на который ссылаются в this entry, демонстрирует, что это будет можно сделать, но с некоторыми осложнениями. Однако этот простой случай не стоит усилий, потому что гораздо более простое решение состоит в создании двух независимых графиков и размещении их рядом друг с другом.

Это приводит к новому вопросу: Как разместить две фигуры бок о бок в Rmarkdown? Есть несколько ответов, которые объясняют, как размещать числа рядом с knitr, но большинство из них относятся к документам LaTeX/RNW. Возможное решение Rmarkdown представлена ​​в this answer, но я хотел бы предложить другой, простой подход, который не предполагает добавления пользовательских CSS:

```{r mychunk, fig.show='hide'} 
library(knitr) 
library(lattice) 
hist(iris$Sepal.Length) 
histogram(iris$Sepal.Length) 
``` 

base|lattice 
-------------------------------|-------------------------------: 
`r include_graphics(paste0(opts_chunk$get("fig.path"), "mychunk-1.png"))`|`r include_graphics(paste0(opts_chunk$get("fig.path"), "mychunk-2.png"))` 

chunk option fig.show = 'hide' подавляет автоматическую печать фигур. Цифры создаются в любом случае и затем могут быть вставлены с использованием include_graphics в сочетании с дорожкой к каталогу рисунков, полученным с использованием opts_chunk$get("fig.path"), и тот факт, что knitr именует «изображения как fig.path-label-i, где i является инкрементальным от 1" (источник: предыдущая ссылка).

Расположение бок о бок достигается с помощью Pandoc pipe_table. Это удобно, потому что ширину изображений можно контролировать простым добавлением или удалением тире из второй строки.

Примечание: в документах HTML, если не является false, изображения включены с использованием URI данных, а не файлов. Решение выше работает, тем не менее, потому что в точке, где knitr обрабатывает файл RMD MD, изображения или еще не преобразованы в URI данных; это происходит на следующем этапе, когда Pandoc генерирует HTML из MD-файла.

Смежные вопросы