2017-04-21 61 views
0

我使用的是university document class,我猜想这个类会影响使用R的ggplot2和tikzDevice生成的图例的图例键和图例的标签布局。由R的ggplot和tikzdevice生成的大学文档类和tikzpicture

为了重现此问题,请执行下列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)的输出文件,我们应该得到这样的事情(请注意,传说是完全正常的位置):

enter image description here

现在,让我们更改线路 “\的DocumentClass [10PT] {}条” 输出文件中(out.tex)到“\的DocumentClass [pdftex] {pittetd}“并使用p编译out.tex dflatex。 请注意,pittetd.cls需要与out.tex位于同一目录(或安装在您的系统中)。 您将看到一些编译器错误,如“丢失的数字,视为零”。请忽略这些错误,因为它们与我们的问题无关,并且一直按Enter直到生成新的PDF文件(out.pdf)。输出看起来像下面这样(注意图例标签和键重叠):

enter image description here

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

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

编辑:

在文件out.tex,如果我们使用pittetd文档类,我发现,如果我改变tikzpicture环境的参数,问题得到解决;换句话说,如果我们改变下面的行:

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

到:

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

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

回答

1

字体尺寸从10PT改变为12pt,所以在10PT通过tikzDevice评价为字长现在太小,因此冲突。

作为一个侧面说明,我觉得更容易从外部产生的PDF文件,然后包括它无主乳胶文档中的任何缩放。我发现内联tikz图很难调试。

+0

为了完整答案,这是如何使tikzDevice基于12pt计算大小而不是默认的10pt:'options(tikzDocumentDeclaration =“\\ documentclass [12pt] {article}”)''。谢谢。 – user8420488483439