我正在使用university document class,我猜这个类在某种程度上会影响使用R&g; 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),我们应该得到这样的东西(请注意这里的图例完全正常):
现在,让我们更改一行&#34; \ documentclass [10pt] {article}&#34;在输出文件(out.tex)内到&#34; \ documentclass [pdftex] {pittetd}&#34;并使用pdflatex编译out.tex。 请注意,pittetd.cls需要与out.tex位于同一目录中(或安装在您的系统中)。 您将看到一些编译器错误,例如&#34;缺少数字,被视为零。&#34;请忽略这些错误,因为它们与我们的问题无关,并且一直按Enter键直到生成新的PDF文件(out.pdf)。输出类似于以下内容(注意图例标签和键重叠):
我最好的猜测是问题可能是TikZ和pittetd之间的一些宏定义冲突。
任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题?
修改
在文件out.tex中,如果我们使用pittetd文档类,我注意到如果我改变tikzpicture环境的参数,问题就会得到解决;换句话说,如果我们更改以下行:
\begin{tikzpicture}[x=1pt,y=1pt]
要:
\begin{tikzpicture}[x=1.1pt,y=1pt]
这应该消除重叠;但是,它也会水平拉伸图,这是不可取的。我想知道是否有更好的方法来解决这个问题,而不必使用这个hack(可能通过更改pittetd.cls文件)。
答案 0 :(得分:1)
字体大小从10pt变为12pt,因此tikzDevice在10pt时评估的字大小现在太小了,因此发生了冲突。
作为旁注,我发现在外部生成pdf更容易,然后在主乳胶文档中包含它而不进行任何重新缩放。我发现内联tikz图更难调试。