在 Beamer 中并排放置 xtable 和 ggplot2 输出
Put xtable and ggplot2 output side-by-side in Beamer
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}
输出:
期望的输出:
我想摆脱(出于某种奇怪的原因)出现在 xtable 的列中的那条额外的行,并希望将 xtable 和 ggplot2 输出并排放置。如果需要调整宽度也没关系
您可以使用 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}
输出为:
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}
输出:
期望的输出:
我想摆脱(出于某种奇怪的原因)出现在 xtable 的列中的那条额外的行,并希望将 xtable 和 ggplot2 输出并排放置。如果需要调整宽度也没关系
您可以使用 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}
输出为: