Ich hätte gerne Grafiken von ggplot2 in ein LaTeX-Dokument mit der Breite von \textwidth
(oder \columnwidth
in einem zweispaltigen Dokument) eingefügt eingefügt. Ich habe die folgende Lösung:Ausrichtung panel.background anstelle von plot.background mit Dokumentenrändern
\documentclass{article}
\usepackage{lipsum, graphicx}
<<knitrOpts, echo=FALSE>>=
knitr::opts_chunk$set(echo = FALSE,
fig.show = 'hide',
fig.width=general_fig_width <- 5,
fig.height=3,
out.width = out_width <- "5in",
out.height="3in"
)
@
\usepackage{geometry}
\setlength{\textwidth}{\Sexpr{out_width}}
<<loadPackages>>=
library(ggplot2)
library(dplyr)
library(grid)
@
\begin{document}
<<plot>>=
diamonds %>%
sample_frac(0.3) %>%
ggplot(aes(x = carat, y = price)) +
geom_point() +
theme_dark() +
theme(plot.margin = unit(c(0,0,0,0), "pt"))
grid.ls(view=TRUE,grob=FALSE)
current.vpTree()
seekViewport('panel.3-4-3-4')
a <- convertWidth(unit(1,'npc'), 'inch', TRUE)
width_factor <- general_fig_width/a
@
\lipsum
\begin{figure}[t]
\makebox[\textwidth][r]{\includegraphics[width=\Sexpr{width_factor}\textwidth]{figure/plot-1}}
\end{figure}
\lipsum
\end{document}
Allerdings ist die Lösung nicht, wenn eine Legende hinzugefügt:
diamonds %>%
sample_frac(0.3) %>%
ggplot(aes(x = carat, y = price, color = price)) +
geom_point() +
theme_dark() +
theme(plot.margin = unit(c(0,0,0,0), "pt"))
Die Legende vermasselt die Ausrichtung auf. Das Setzen des pos
Arguments in \makebox
funktioniert nicht, da der Hintergrund nicht zentriert ist. Ich verstehe, dass ich die Legende auf die Karte setzen könnte, aber ich hätte lieber die Option, dass die Legende in den Rand eindringt.
ich den Fehler 'Fehler in grid.Call (L_convert bekommen, x, as.integer (whatfrom), as.integer (whatto),: INTEGER() kann nur auf 'integer', nicht auf 'nULL' in der Zeile 'fig_width <-' angewendet werden. Es sieht aus wie die Umwandlung' g $ widths [4] <- unit (...) 'hat keinen Effekt – Hugh
probiere' g $ widthes [4] <- list (unit (general_fig_width, "in")) 'stattdessen benutze ich R-devel und da war eine kürzliche Änderung re '[<-. Einheit' – baptiste
Seltsamerweise 'fig_width <- convertWidth (Summe (g $ Breite [-4]) + Einheit (g $ Breite [4]," in ")," in ", valueOnly = TRUE) funktioniert einwandfrei. – Hugh