2017-04-21 58 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