2

Gnu R 提供了一种非常奇怪的方式来记录公式和符号。它经常在此处讨论并在 R 帮助页面中提及?plotmath。对于曾经LaTeX在 R 中编写过简单公式代码的人来说,这些代码看起来不可读并且容易出错。

有没有更好的方法来用公式进行注释?有没有这样的函数tex2r("x_2")会生成奇怪的代码?

编辑:

我正在寻找没有 TikZdevice 的解决方案,因为 TikZdevice 仍然非常脆弱,打印输出看起来并不完全相同。

4

2 回答 2

7

使用tikzDevice(目前只能从 CRAN 档案中获得),您可以使用直接的 LaTeX 标记来注释您的绘图。(该包装带有一个漂亮的小插图,可以让您启动并运行)。

下面的示例直接来自此页面,该页面还显示了它生成的图形:

require(tikzDevice)

tikz('normal.tex', standAlone = TRUE, width=5, height=5)

# Normal distribution curve
x <- seq(-4.5,4.5,length.out=100)
y <- dnorm(x)

# Integration points
xi <- seq(-2,2,length.out=30)
yi <- dnorm(xi)

# plot the curve
plot(x,y,type='l',col='blue',ylab='$p(x)$',xlab='$x$')
# plot the panels
lines(xi,yi,type='s')
lines(range(xi),c(0,0))
lines(xi,yi,type='h')

#Add some equations as labels
title(main="$p(x)=\\frac{1}{\\sqrt{2\\pi}}e^{-\\frac{x^2}{2}}$")
int <- integrate(dnorm,min(xi),max(xi),subdivisions=length(xi))
text(2.8, 0.3, paste("\\small$\\displaystyle\\int_{", min(xi),
    "}^{", max(xi), "}p(x)dx\\approx", round(int[['value']],3),
    '$', sep=''))

#Close the device
dev.off()

# Compile the tex file
tools::texi2dvi('normal.tex',pdf=T)
于 2012-10-30T20:45:54.283 回答
1

我刚刚找到了一个完全符合 OP 要求的包:latex2exp并且在里面有TeX.

例如:

library(latex2exp)
library(berryFunctions)
set.seed(1)
milk <- data.frame(Datum = as.Date(rep(seq(17500, 18460, by = 30), each = 30), origin = "1970-01-01"),
                   Milch = abs(rnorm(990, mean = 20, sd = 8)))
X11(width = 12, height = 7)
par(mar = c(3,5.5,3,1))
with(milk, plot(Datum, Milch, pch = "-", cex=1.5, col = rgb(red = 0, green = 0.5, blue = 0.5, alpha = 0.7),
                xaxt = "n", xlab = "", ylab = "",
                main = "Milchleistung am Wolkenhof"))
title(ylab = TeX("Milchmenge $\\,$ $\\left[\\frac{\\mathrm{kg}}{\\mathrm{Kuh} \\cdot \\mathrm{Tag}}\\right]$"), line = 2.5)
monthAxis()

产量:

生乳 编辑:现在“Milchmenge”和左括号“[”之间有一个空格,但我不想因此上传新图片。

于 2020-08-18T20:06:50.027 回答