在Beamer中并排放置xtable和ggplot2输出

问题描述 投票:0回答:1

MWE:

\documentclass[pdf, t, 10pt]{beamer}
\usetheme{Antibes}
\mode<presentation>{}
\usepackage{array}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash\hspace{0pt}}p{#1}}

\begin{document}
\begin{frame}[fragile]
<<echo=FALSE, fig.show='hold', results='asis', fig.width=3, fig.height=3, fig.align='right'>>=
# Ficticious data
grad <- c(0.846, 0.863, 0.852, 0.873)
counts <- c(500, 485, 520, 545)
year <- c(1, 2, 3, 4)
library(ggplot2)
library(xtable)

format_pct <- function(x){
  paste0(round(x * 100, 1), "%")
}
df <- data.frame(Year = as.integer(year),
                 Counts = as.integer(counts),
                 Grad_Rate = grad,
                 stringsAsFactors = FALSE)
p <- ggplot(df, aes(x = Year, y = Grad_Rate, weight = counts)) + 
  geom_point() +
  geom_smooth(method = "lm") + 
  theme_bw() + 
  scale_y_continuous(labels = format_pct, breaks = seq(0.5, 1, by = 0.05),
                     limits = c(0.8, 1)) + 
  xlab("Year") + 
  ylab("Graduation Rate")
print(xtable(df, align = c("l", "R{0.05\\textwidth}", "R{0.15\\textwidth}", "R{0.12\\textwidth}")), 
      include.rownames = FALSE,
      latex.environments="flushleft"
      )
p
@
\end{frame}

\end{document}

输出:

enter image description here

所需的输出:

我想摆脱出现在xtable列中的(出于某种奇怪的原因)多余的一行,并希望将xtable和ggplot2输出并排放置。如果必须调整宽度就很好。

r ggplot2 knitr xtable beamer
1个回答
0
投票

您可以使用[minipage]获得所需的输出。例如。

\documentclass[pdf, t, 10pt]{beamer}
\usetheme{Antibes}
\mode<presentation>{}
\usepackage{array}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash\hspace{0pt}}p{#1}}

\begin{document}
\begin{frame}[fragile]
  \frametitle{Table and Graphics}
  \framesubtitle{Side-by-Side via minipage}

<<label = "setup", include = FALSE>>=
# Ficticious data
grad <- c(0.846, 0.863, 0.852, 0.873)
counts <- c(500, 485, 520, 545)
year <- c(1, 2, 3, 4)
library(ggplot2)
library(xtable)

format_pct <- function(x){
  paste0(round(x * 100, 1), "%")
}
df <- data.frame(Year = as.integer(year),
                 Counts = as.integer(counts),
                 Grad_Rate = grad,
                 stringsAsFactors = FALSE)
p <- ggplot(df, aes(x = Year, y = Grad_Rate, weight = counts)) + 
  geom_point() +
  geom_smooth(method = "lm") + 
  theme_bw() + 
  scale_y_continuous(labels = format_pct, breaks = seq(0.5, 1, by = 0.05),
                     limits = c(0.8, 1)) + 
  xlab("Year") + 
  ylab("Graduation Rate")
@

  \begin{minipage}{0.5\linewidth}
<<label = "table", echo = FALSE, results='asis'>>=
print(xtable(df, align = "lrrr"),
      include.rownames = FALSE,
      latex.environments="flushleft"
      )
@
  \end{minipage}% 
  \begin{minipage}{0.5\linewidth}
<<label = "graphic", echo = FALSE, fig.width=3, fig.height=3, fig.align='right'>>=
p
@
  \end{minipage}

\end{frame}

\end{document}

输出为:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.