我使用的是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)的輸出文件,我們應該得到這樣的事情(請注意,傳說是完全正常的位置):
現在,讓我們更改線路 「\的DocumentClass [10PT] {}條」 輸出文件中(out.tex)到「\的DocumentClass [pdftex] {pittetd}「並使用p編譯out.tex dflatex。 請注意,pittetd.cls需要與out.tex位於同一目錄(或安裝在您的系統中)。 您將看到一些編譯器錯誤,如「丟失的數字,視爲零」。請忽略這些錯誤,因爲它們與我們的問題無關,並且一直按Enter直到生成新的PDF文件(out.pdf)。輸出看起來像下面這樣(注意圖例標籤和鍵重疊):
我最好的猜測是,這個問題可能是TikZ和pittetd之間的一些宏定義衝突。
任何人都可以告訴我爲什麼會發生這種情況,以及如何解決它?
編輯:
在文件out.tex,如果我們使用pittetd文檔類,我發現,如果我改變tikzpicture環境的參數,問題得到解決;換句話說,如果我們改變下面的行:
\begin{tikzpicture}[x=1pt,y=1pt]
到:
\begin{tikzpicture}[x=1.1pt,y=1pt]
這應該刪除的重疊;但是,它也會水平拉伸繪圖,這是不可取的。我想知道是否有更好的方法來解決這個問題,而不必使用這個黑客(也許通過更改pittetd.cls文件)。
爲了完整答案,這是如何使tikzDevice基於12pt計算大小而不是默認的10pt:'options(tikzDocumentDeclaration =「\\ documentclass [12pt] {article}」)''。謝謝。 – user8420488483439