R的ggplot和tikzdevice生成的大学文档class和tikzpicture

University document class and tikzpicture generated by R's ggplot and tikzdevice

我正在使用 university document class,我猜这个 class 会以某种方式影响使用 R 的 ggplot2 和 tikzDevice 生成的图的图例键和图例标签的布局。

为了重现此问题,请运行以下 R 脚本:

require(dplyr)
require(ggplot2)
require(tikzDevice)

pi <- filter(diamonds, (cut=="Premium" | cut=="Ideal") & color<"I")
pi$cut <- factor(pi$cut)
pi$color <- factor(pi$color)

g1 <- ggplot(data=pi, aes(x=color, fill=cut, y=price)) +
  geom_violin() + theme(legend.position = "top")

setTikzDefaults(overwrite = TRUE)
preamble <- options("tikzLatexPackages") 
options("tikzLatexPackages" = c(preamble$tikzLatexPackages, "\usepackage{amsmath}"))
tikz(file = "out.tex", width = 3, height = 2, standAlone = T )

print(g1)

dev.off()

现在,如果我们使用 pdflatex 编译这个脚本 (out.tex) 的输出文件,我们应该得到类似这样的东西(请注意这里的图例是完全正常的):

现在,让我们将输出文件 (out.tex) 中的行“\documentclass[10pt]{article}”更改为“\documentclass[pdftex]{ pittetd}”并使用 pdflatex 编译 out.tex。 请注意 pittetd.cls 需要与 out.tex 位于同一目录中(或安装在您的系统中)。 您会看到一些编译器错误,例如 "Missing number, treated as zero." 请忽略这些错误,因为它们与我们的问题无关,并继续按 Enter 直到生成新的 PDF 文件 (out.pdf)。输出类似于以下内容(注意图例标签和键重叠):

我最好的猜测是问题可能是 TikZ 和 pittetd 之间的一些宏定义冲突。

任何人都可以告诉我为什么会发生这种情况以及如何解决它吗?

编辑:

在文件out.tex中,如果我们使用pittetd文件class,我注意到如果我改变tikzpicture环境的参数,问题就解决了;换句话说,如果我们更改以下行:

\begin{tikzpicture}[x=1pt,y=1pt]

收件人:

\begin{tikzpicture}[x=1.1pt,y=1pt]

这应该可以消除重叠;但是,它也会水平拉伸图,这是不可取的。我想知道是否有更好的方法来解决这个问题而不必使用这个 hack(可能通过更改 pittetd.cls 文件)。

字体大小从 10pt 变为 12pt,因此 tikzDevice 在 10pt 时评估的字大小现在太小,因此发生冲突。

作为旁注,我发现在外部生成 pdf 文件更容易,然后将其包含在主乳胶文档中而不进行任何重新缩放。我发现内联 tikz 图更难调试。