标签: tikzdevice

在书本图形环境中包含TikZ代码

我想在bookdown文档中添加TikZ图形,以便包含一些精美的图形。

我的主要输出格式是LaTeX,这意味着我基本上可以在Rmarkdown文件中逐字包含TikZ图形,并且可以很好地呈现。但是,有两个问题困扰着我:

  • 我希望TikZ图形成为图形环境的一部分(用于编号,标题等)。
  • 我希望能够将相同的代码呈现给PDF(LaTeX)和Gitbook(HTML)。

现在,我有以下块,当我将其渲染为pdf时,可以很好地生成相关图形。

```{r, echo=FALSE, engine='tikz', out.width='90%', fig.ext='pdf', fig.cap='Some caption.'}
\begin{tikzpicture}[scale=.7]
\draw [fill=gray!30,very thick] (0,-1) rectangle (5,1);
\draw [very thick] (5, 0) -- (13,0);
\node [below] at (2,-1) {\large Hello};
\node [below, align=center] at (0,-1) {\large Two\\ lines};
\end{tikzpicture}
```
Run Code Online (Sandbox Code Playgroud)

但是,代码有两个问题:

  1. 渲染到gitbook时,我没有得到任何输出(使用knitrbookdown)。但是,我确实获得了图形标题,如果我渲染到html_document它,那么它也可以工作,并且我可以看到图形。
  2. 对于PDF,使用计算机现代字体呈现文本。我真的很想更改此设置,并且LaTeX文档中的主要字体已经设置为其他字体。但是,由于代码是由TikZ引擎本地渲染然后插入的,因此它不是完整LaTeX文档的一部分。我可以呈现代码之前添加一些TikZ引擎包含的LaTeX选项,软件包等吗?

如果还有其他方法可以将TikZ代码作为图形环境的一部分包含在内,那么我很高兴知道。

更新:我猜第二点可以通过设置文件中engine.opts = list(template = "latex/tikz2pdf.tex")包含LaTeX的必要设置的位置来解决tikz2pdf.tex。该文件是使用LaTeX读取的,但xelatex由于要使用fontspecLaTex软件包,因此我想使用该文件进行解析。仍然可以更改吗?

r knitr r-markdown bookdown tikzdevice

5
推荐指数
1
解决办法
980
查看次数

在 R 中为 tikzdevice 栅格化 ggplot 图像

我使用 R 分析数据,使用 ggplot 创建绘图,使用 tikzDevice 打印它们,最后使用 Latex 来创建报告。问题是由于乳胶的内存限制,具有许多点的大图会失败。我在这里找到了https://github.com/yihui/tikzDevice/issues/103一个在打印 tikz 文件之前光栅化绘图的解决方案,它允许单独打印点和文本。

require(png)
require(ggplot2)
require(tikzDevice)

## generate data
n=1000000; x=rnorm(n); y=rnorm(n)

## first try primitive
tikz("test.tex",standAlone=TRUE)
plot(x,y)
dev.off()
## fails due to memory
system("pdflatex test.tex")


## rasterise points first
png("inner.png",width=8,height=6,units="in",res=300,bg="transparent")
par(mar=c(0,0,0,0))
plot.new(); plot.window(range(x), range(y))
usr <- par("usr")
points(x,y)
dev.off()
# create tikz file with rasterised points
im <- readPNG("inner.png",native=TRUE)
tikz("test.tex",7,6,standAlone=TRUE)
plot.new()
plot.window(usr[1:2],usr[3:4],xaxs="i",yaxs="i")
rasterImage(im, usr[1],usr[3],usr[2],usr[4])
axis(1); axis(2); box(); title(xlab="x",ylab="y")
dev.off()
## this works
system("pdflatex test.tex")


## now with ggplot
p …
Run Code Online (Sandbox Code Playgroud)

r rasterizing ggplot2 tikzdevice

5
推荐指数
1
解决办法
744
查看次数

grid_plot + tikzDevice + 带有乳胶标记的共享图例

我一直在尝试遵循这个小插图,了解如何为多个 ggplot2 制作共享图例。给定的示例按原样完美运行,但就我而言,我使用 tikzDevice 导出tikzpicture环境。主要问题似乎是图例键的宽度未被正确捕获grid_plot

我想出了一个最小的 R 代码来重现该问题:

require(ggplot2)
require(grid)
require(gridExtra)
require(cowplot)
require(tikzDevice)

tikz(file = "./tmp.tex", width = 5.6, height = 2.2, standAlone = T )
mpg2 <- mpg

mpg2$cyl = as.factor(mpg2$cyl)
levels(mpg2$cyl) <- c("\\textbf{\\textsc{four}}",
                      "\\textbf{\\textsc{five}}",
                      "\\textbf{\\textsc{six}}",
                      "\\textbf{\\textsc{seven}}",
                      "\\textbf{\\textsc{eight}}")

plot.mpg <- ggplot(mpg2, aes(x=cty, colour=cyl, y = hwy)) + 
     geom_point() +
     theme(legend.position='none')

legend <- get_legend(plot.mpg + theme(legend.position = "top"))

print(plot_grid(legend, 
                 plot.mpg, nrow=2, ncol=1,align='h', 
                 rel_heights = c(.1, 1)))

dev.off()
Run Code Online (Sandbox Code Playgroud)

生成的 PDF 文件(编译 tmp.tex 后)如下所示:

在此输入图像描述

正如我们所观察到的,第一个图例键(四)仅部分显示,图例键(八)完全不可见。我尝试更改tikz …

r ggplot2 cowplot tikzdevice

5
推荐指数
1
解决办法
566
查看次数

在 RMarkdown 中使用 tikzdevice 和 beamer 输出

我想知道tikzdevice包是否可以用于在 RMarkdown 中生成 R 图,并导出到投影仪演示文稿。

我本以为我正在寻找的解决方案可能类似于tikzdevice 手册第 15 页上的 Sweave 示例。

我在不知道自己在做什么的情况下尝试过修改 RMarkdown 书中 Yihui 的示例:

---
title: "Habits"
author: John Doe
date: March 22, 2005
output: beamer_presentation
---

# In the morning

## Getting up

- Turn off alarm
- Get out of bed

---

```{r, echo=FALSE, results='tex'}
require(tikzDevice)
tikz(console=TRUE)
plot(sin, -pi, 2*pi, main="A Stand Alone TikZ Plot")
dummy <- dev.off()
```     
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不会导致 tikz 图在投影仪演示文稿中呈现。有谁知道如何实现这一点?谢谢。

问候,迈克尔

beamer r-markdown tikzdevice

4
推荐指数
1
解决办法
402
查看次数

标签 统计

tikzdevice ×4

r ×3

ggplot2 ×2

r-markdown ×2

beamer ×1

bookdown ×1

cowplot ×1

knitr ×1

rasterizing ×1