具有不同图形包数字的面板
Panel with different graphic packages figures
希望问题表述正确。出于教学目的,我想创建一个 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 直方图关闭了面板,删除了 Base 图形直方图。
预期结果:
面板应该在一侧报告基础图,在另一侧报告点阵图,类似于这个非常漂亮的产品post。不幸的是,博客没有解释结果是如何产生的,我也没有找到关于这个问题的更多信息。
我可以很容易地生成两个不同的图像,但我认为面板表示生成的结果更漂亮
非常感谢您的耐心等待。
正如所讨论的那样,here on the R mailing list, the compatibility of lattice
and base R graphics is limited. The article that is referenced in this entry 表明它 可以 完成,但有一些并发症。然而,这个简单的案例并不值得付出努力,因为更简单的解决方案是生成两个独立的图并将它们并排放置。
这引出了新问题:如何在 Rmarkdown 中并排放置两个数字? 有一些答案解释了如何将数字并排放置 knitr
,但其中大部分参考了 LaTeX/RNW 文档。 this answer 中提供了 Rmarkdown 的可能解决方案,但我想建议另一种不涉及添加自定义的简单方法 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
名称 "images as fig.path-label-i
where i
is incremental from 1" 的事实插入(来源:上一个 link).
并排布局是使用 Pandoc pipe_table
实现的。这很方便,因为可以通过简单地在第二行添加或删除破折号来控制图像的宽度。
注意:在 HTML 文档中,除非 YAML option self_contained
是 false
,图像是使用数据 URI 包含的,而不是文件。上面的解决方案仍然有效,因为在 knitr
将 RMD 文件处理为 MD 时,图像或尚未转换为数据 URI;这发生在 Pandoc 从 MD 文件生成 HTML 的下一步中。
希望问题表述正确。出于教学目的,我想创建一个 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 直方图关闭了面板,删除了 Base 图形直方图。
预期结果:
面板应该在一侧报告基础图,在另一侧报告点阵图,类似于这个非常漂亮的产品post。不幸的是,博客没有解释结果是如何产生的,我也没有找到关于这个问题的更多信息。 我可以很容易地生成两个不同的图像,但我认为面板表示生成的结果更漂亮
非常感谢您的耐心等待。
正如所讨论的那样,here on the R mailing list, the compatibility of lattice
and base R graphics is limited. The article that is referenced in this entry 表明它 可以 完成,但有一些并发症。然而,这个简单的案例并不值得付出努力,因为更简单的解决方案是生成两个独立的图并将它们并排放置。
这引出了新问题:如何在 Rmarkdown 中并排放置两个数字? 有一些答案解释了如何将数字并排放置 knitr
,但其中大部分参考了 LaTeX/RNW 文档。 this answer 中提供了 Rmarkdown 的可能解决方案,但我想建议另一种不涉及添加自定义的简单方法 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
名称 "images as fig.path-label-i
where i
is incremental from 1" 的事实插入(来源:上一个 link).
并排布局是使用 Pandoc pipe_table
实现的。这很方便,因为可以通过简单地在第二行添加或删除破折号来控制图像的宽度。
注意:在 HTML 文档中,除非 YAML option self_contained
是 false
,图像是使用数据 URI 包含的,而不是文件。上面的解决方案仍然有效,因为在 knitr
将 RMD 文件处理为 MD 时,图像或尚未转换为数据 URI;这发生在 Pandoc 从 MD 文件生成 HTML 的下一步中。