我正在使用Knitr在Rstudio中创建一个pdf报告。其中一个必要条件是我将所有绘图生成为单独的图像,而不是将它们包含在文档中。为此,我使用以下代码:
knitr::opts_chunk$set(
echo = FALSE,
message = FALSE,
warning = FALSE,
fig.align='center',
fig.pos='H',
fig.path = "plots/",
dev = c("png"),
dpi=500
)
哪个工作得很好。最近我被要求包括矢量图像。我认为在开发输出中添加“svg”可以解决问题,但是虽然生成了图像,但它总是被裁剪。 新代码:
knitr::opts_chunk$set(
echo = FALSE,
message = FALSE,
warning = FALSE,
fig.align='center',
fig.pos='H',
fig.path = "plots/",
dev = c("png", "svg"),
dpi=500
)
Here你可以看到一个png文件的例子,here我得到了相应的svg图像(你可能需要检查xml代码,因为图像查看器无法打开它)。我是矢量图像的新手,但据我所知,网页浏览器应该可以打开它们,但事实并非如此。看起来knitr生成的XML在某种程度上搞砸了,但我完全不知道如何修复它。
更新:好的,所以通过修改XML代码我发现问题是XML的image标签中的x和y坐标。由于某种原因,它们被设置为x =“186”y =“6”。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg width="216" height="391">
<image id="image0" width="216" height="391" x="186" y="6"
xlink:href="blablabla..."/>
</svg>
我仍然不知道如何解决这个问题,因为我不知道如何在块设置中将它们设置为0.
我正在使用的Rmd代码如下,我只删除了所有无聊的文本并使用了mtcars而不是实际数据:
---
title: "Title"
output:
pdf_document:
dev: pdf
fig_caption: yes
number_sections: yes
toc: yes
toc_depth: 3
documentclass: article
urlcolor: blue
classoption: a4paper
header-includes:
- \usepackage{graphicx}
- \usepackage{float}
---
```{r setup, message=FALSE, warning=FALSE, include=FALSE}
library("RColorBrewer")
library("pheatmap")
library("knitr")
knitr::opts_chunk$set(
echo = FALSE,
message = FALSE,
warning = FALSE,
fig.align='center',
fig.pos='H',
fig.path = "plots/",
dev = c("png", "svg"),
dpi=500
)
```
Some text here...
```{r prueba, echo=FALSE, message=FALSE, warning=FALSE}
hmcol <- rev(brewer.pal(11,"RdBu"))
pheatmap( as.matrix(mtcars[1:20,1:6])
, scale = "row"
, cellwidth = 15
, color = hmcol
, border_color = NA
, clustering_distance_cols = "correlation"
, clustering_distance_rows = "correlation"
, cluster_rows = T
, cluster_cols = T
, treeheight_row = 0
, treeheight_col = 0
, legend = TRUE
, show_rownames = T
, show_colnames = T
, labels_col = c("A", "B", "C", "D", "E", "F")
)
```