Knitr ドキュメントでは、いくつかの LaTeX コードを出力するカスタム ラベル関数を使用しています (問題を説明するためだけに、ここでは役に立ちません)。通常のプロットでは、すべて問題ありません。R は出力のメトリックを正しく推測し、妥当なスペースを残します (中央のプロット)。しかし、ファセットを使用する場合、これらのメトリクスは単にプレーン文字列を使用しており、非 LaTeX 出力デバイス (最後のプロット) から予想されるように、LaTeX として解釈しません (最初のプロット)。
ラベルを常にLaTeXとして解釈し、スマートメトリックを使用するようにggplotを説得するにはどうすればよいですか?
\documentclass{beamer}
\setbeamertemplate{navigation symbols}{}
\usepackage{siunitx}
\begin{document}
\begin{frame}
<<dev='tikz', echo=F, fig.height=1.5>>=
library(ggplot2)
mylabel <- function() {
function(xs) { sprintf("\\ensuremath{\\num{%g}}",xs) }
}
data <- data.frame(x=c(1,10), y=c(1,10), kind=c("a","a"))
ggplot(data,aes(x=x,y=y)) + geom_point() +
scale_y_continuous(labels=mylabel()) +
facet_grid(~ kind)
@
<<dev='tikz', echo=F, fig.height=1.5>>=
ggplot(data,aes(x=x,y=y)) + geom_point() +
scale_y_continuous(labels=mylabel())
@
<<echo=F, fig.height=1.5>>=
ggplot(data,aes(x=x,y=y)) + geom_point() +
scale_y_continuous(labels=mylabel())
@
\end{frame}
\end{document}