我希望这个问题得到正确陈述。出于教学目的,我想创建一个knitr文档,其中R基本图形系统的输出和莱迪思包的输出在面板中进行比较。 考虑一个数字向量:
```{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
```
但莱迪思直方图关闭了面板,删除了基本图形直方图。
预期结果:
面板应该在一侧报告Base图,在另一侧报告Lattice图,类似于这个非常漂亮{{3}}的产品。不幸的是,博客没有解释结果是如何产生的,我没有找到关于这个问题的进一步信息。 我可以轻松地生成两个不同的图像,但我认为面板表示会产生更精美的可比结果
非常感谢您的耐心等待。
答案 0 :(得分: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文档中,除非YAML option self_contained
为false
,否则使用数据URI而不是文件包含图像。上面的解决方案仍然有效,因为knitr
处理RMD文件到MD,图像或尚未转换为数据URI;这发生在Pandoc从MD文件生成HTML的下一步中。