使用R markdown

时间:2017-08-30 09:22:30

标签: r svg knitr

我正在使用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")
          )
```

0 个答案:

没有答案