图中的乳胶方程

Latex equation in a plot

我正在用 rmarkdown 编写生成一个 html_document,我想在轴标题中写一个乳胶方程。 有办法吗?

x <- c(0,1,1,1,2,2,2,3)
Fn <- ecdf(x)
plot(Fn , lwd = 2, main="",ylab = "$F(x)$",xlab="$x$",yaxt="n")

您可以使用latex2exp

library(latex2exp)
plot(Fn , lwd = 2, main="",
     ylab = latex2exp("$F(x)$"),
     xlab=latex2exp("$x$"),yaxt="n")

或者在 R Base 中

plot(Fn , lwd = 2, main="",
     ylab = expression("F(x)"),
     xlab=expression("x"),
     yaxt="n")

编辑:抱歉,以下答案适用于 PDF 输出。通过将 tikz 图处理成 PNG 或 SVG 文件并包含它,可能可以为 HTML 输出做类似的事情,但我还没有弄清楚细节。

您可以试试 tikzDevice 包。此示例基于 Yihui 的建议:https://github.com/daqana/tikzDevice/issues/60.

---
output:  
  pdf_document
header-includes:  
 - \usepackage{tikz}
---

```{r setup}
library(knitr)
knit_hooks$set(plot = function(x, options) {
  if ('tikz' %in% options$dev && !options$external) {
    hook_plot_tex(x, options)
  } else hook_plot_md(x, options)
})
```

Text.

```{r test, dev='tikz', external=FALSE}
x <- c(0,1,1,1,2,2,2,3)
Fn <- ecdf(x)
plot(Fn , lwd = 2, main="",ylab = "$F(x)$",xlab="$x$",yaxt="n")
```

这是输出:

正如@MrFlick 所指出的,数学注释有一定的语法。有时,由于复杂的公式或某些符号,这可能还不够。

避免在 HTML 文档内的 pdf 查看器中渲染 pdf 图(使用 tikz 创建)的解决方法是将其转换为另一种格式。

这里我更改了 plot hook 以将 tikz pdf plot 转换为 png 并使用原始 plot hook 包含它。

---
title: "Test"
output: html_document
---

```{r, include=F}
library(pdftools)
library(png)
library(knitr)
oldHook <- knit_hooks$get("plot")
knit_hooks$set(plot = function(x, options) {
  fname  <- gsub("pdf", "png", x)
  bitmap <- pdf_render_page(x, page = 1, dpi = 300)
  png::writePNG(bitmap, fname)
  oldHook(fname, options)
})
```


```{r, dev='tikz'}
x <- c(0,1,1,1,2,2,2,3)
Fn <- ecdf(x)
plot(Fn , lwd = 2, main="",ylab = "$F(x)$",xlab="$x$",yaxt="n")
```