图中的乳胶方程
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")
```
我正在用 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")
```